Welcome to CyberPath
Relevant source files
The following files were used as context for generating this wiki page:
CyberPath is a project dedicated to empowering individuals and organizations in their cybersecurity journey by providing accessible resources, tools, and a comprehensive database of cybersecurity certifications and training programs. The platform's mission is to help users navigate the complex world of cybersecurity education and career advancement.
The project is built as an open-source platform, with a publicly accessible website that is automatically updated with every new release. Key features include a searchable database of certifications and the ability for the community to contribute new resources.
Sources: README.md:3-5, README.md:18-24
System Architecture
CyberPath is a modern web application built with Astro. It utilizes a component-based architecture with React for interactive UI elements and Tailwind CSS for styling. The content, specifically cybersecurity certifications, is managed as a collection using Astro's content collections feature.
Sources: package.json:10-24, astro.config.ts:13-26
Technology Stack
The following diagram illustrates the main technologies and libraries used in the CyberPath project.
This diagram shows the core framework Astro and its key integrations like React and Tailwind CSS, along with other significant dependencies.
Sources: package.json:10-34, astro.config.ts:13-26
Project Structure
The project follows a standard Astro project structure.
src/pages/: Contains the application's routes, including API endpoints that serve JSON data.src/content/certifications/: Stores the markdown files for each certification.src/components/: Contains reusable Astro and React components.src/lib/: Holds shared library code, such as career path definitions.scripts/: Contains build-related scripts, like the screenshot generation script.
Sources: src/pages/career-paths/[path]/data.json.ts, src/content.config.ts:6, src/components/astro/database/reactive-datatable.tsx, scripts/screenshot.js
Core Features
Public Certification Database
The central feature of CyberPath is a comprehensive, searchable database of cybersecurity certifications. Users can search by acronym, provider, title, or career path.
Sources: README.md:18-21
Data Loading and Filtering
The database is implemented as a ReactiveDatatable React component. On page load, it fetches all certification metadata from a JSON API endpoint and a pre-computed search index generated by Fuse.js. This allows for fast, client-side searching and filtering.
The data loading flow is as follows:
- The
ReactiveDatatablecomponent mounts. - It initiates parallel
fetchrequests to/database/data.jsonand/database/data-index.json. - The full dataset and the Fuse.js index are loaded into the component's state.
- A new
Fuseinstance is created with the data and the pre-computed index. - User input in the search bar filters the data on the client side using the
Fuseinstance. - The component re-renders the table with the filtered results, including pagination.
Sources: src/components/astro/database/reactive-datatable.tsx:142-192
The following sequence diagram illustrates the data fetching process for the reactive datatable.
Career Paths
CyberPath organizes certifications into distinct career paths to guide users. These paths are defined in a central module and are used to categorize and filter certifications.
Sources: src/lib/career-paths.ts
The available career paths are:
| Career Path | Description |
|---|---|
| Blue Team Specialist | Defends an organization’s networks and systems against cyberattacks. |
| Cloud Security Specialist | Designs and implements security measures to protect cloud-based infrastructure and data. |
| Cybersecurity Manager | Leads and manages cybersecurity teams and strategies. |
| Malware Developer | Develops and tests exploits to identify vulnerabilities in systems. |
| OSINT Specialist | Gathers and analyzes publicly available information to identify threats. |
| Penetration Tester | Conducts authorized simulated cyberattacks to identify vulnerabilities. |
| Red Team Specialist | Performs offensive security testing, simulating advanced cyberattacks. |
| Risk Management Specialist | Identifies, assesses, and prioritizes potential security risks. |
| Security Operations Specialist | Manages the daily operations of an organization’s security infrastructure. |
| Threat Hunter | Actively searches for hidden and advanced threats within an organization’s environment. |
Sources: src/lib/career-paths.ts:18-111
Each career path has a dedicated page that displays certifications relevant to it. This is achieved through dynamic page generation in Astro, with data fetched from a specific API endpoint for that path.
Sources: src/pages/career-paths/[path]/data.json.ts:38-42
Content and Data Model
Certification data is managed through Astro's content collections. Each certification is a Markdown file with a defined frontmatter schema.
Sources: src/content.config.ts
Certification Schema
The certifications collection schema is defined using Zod. This ensures type safety and consistency for all certification entries.
This diagram shows the fields defined for each certification in the content collection.
Sources: src/content.config.ts:7-19
API Endpoints
The application exposes several JSON API endpoints to serve certification data and search indexes.
| Endpoint | Method | Description | Source File |
|---|---|---|---|
/database/data.json | GET | Returns metadata for all certifications. | src/pages/database/data.json.ts |
/database/data-index.json | GET | Returns a pre-computed Fuse.js index for all certifications. | src/pages/database/data-index.json.ts |
/career-paths/[path]/data.json | GET | Returns metadata for certifications belonging to a specific career path. | src/pages/career-paths/[path]/data.json.ts |
/career-paths/[path]/data-index.json | GET | Returns a Fuse.js index for a specific career path. | src/pages/career-paths/[path]/data-index.json.ts |
Sources: src/pages/database/data.json.ts, src/pages/database/data-index.json.ts, src/pages/career-paths/[path]/data.json.ts, src/pages/career-paths/[path]/data-index.json.ts
Development and Build Process
Local Setup
To run the project locally, a developer needs to clone the repository, install dependencies using pnpm, and run the development server.
- Clone the repository: `git clone https://github.com/ebalo55/cyberpath.git%60
- Navigate into the directory:
cd cyberpath - Install dependencies:
pnpm install - Run the dev server:
pnpm run dev
The application will be accessible at http://localhost:4321.
Sources: README.md:33-50
Build Script
The project has a custom build process defined in package.json. The build script performs several actions in sequence.
"build": "astro check && astro build && astro preferences disable devToolbar && npx puppeteer browsers install chrome && node ./scripts/screenshot.js"
Sources: package.json:6-6
The following flowchart illustrates the steps executed by the pnpm run build command.
This process not only builds the static site but also programmatically generates a screenshot of the database page using Puppeteer and Sharp for optimization. This screenshot is likely used for promotional or preview purposes.
Sources: package.json:6, scripts/screenshot.js
Contributing
Contributions are welcomed via GitHub Pull Requests. The process involves forking the repository, creating a feature branch, making changes, and submitting a pull request for review.
Sources: CONTRIBUTING.md:6-23
Conclusion
CyberPath is a well-structured project built on modern web technologies to serve as a valuable resource for the cybersecurity community. Its architecture leverages Astro for static site generation and React for dynamic user interfaces, like the powerful client-side searchable database. The use of content collections for managing data and a clear contribution process makes it an extensible and community-driven platform.