Educational platform built on Next.js 16 (App Router), TypeScript, Tailwind CSS v4, GSAP, and MDX. This project uses no database and no authentication, serving as a static content hub for developers with a dark "coder" aesthetic.
This platform is structured around Next.js App Router for high-performance static rendering and routing.
- Framework: Next.js 16 (App Router)
- Styling: Tailwind CSS v4 with custom CSS variables (
var(--bg-primary)) - Animations: GSAP &
@gsap/reactfor scroll triggers, page transitions, and element reveals - Content: MDX powered by
next-mdx-remote, styled via custom components, with server-side syntax highlighting viashiki. - Pages:
/-> Home page with animated Hero and Domain Grid/[domain]-> Domain Hub page (e.g.,/full-stack) showing Roadmaps and Topic Notes/[domain]/notes/[slug]-> Individual MDX notes pages
- State/Data: All content is statically mocked in
lib/data/for domains, roadmaps, and notes. - Search: Client-side fuzzy search across all domains, roadmaps, and notes, accessible via the
Cmd/Ctrl + Kmenu.
Follow these steps to run the application locally. Make sure you have Node.js 18+ installed.
# Clone the repository
git clone https://github.com/brokennshell/docs.git
cd docs
# Install dependencies
npm install
# Start the development server
npm run devThe application will start on http://localhost:3000.
npm run dev- Starts the development server.npm run build- Creates an optimized production build.npm run start- Starts the Next.js production server.npm run lint- Runs ESLint to catch issues.
The platform uses statically mocked content defined in the @/lib/data directory and content/ folder.
- Domains: Defined in
lib/data/domains.ts. - Roadmaps: Defined in
lib/data/roadmaps.ts. - Notes Metadata: Defined in
lib/data/notes.ts. - MDX Content: MDX files are stored in the
content/[domain]/...directory. Ensure the slug defined innotes.tsmatches the literal filename (e.g.,slug: 'react-hooks'expectscontent/full-stack/react-hooks.mdx).
- Reporting Issues: Please open an issue if you encounter bugs or want to request a new feature.
Please follow these conventions for commit messages to keep our history clean and readable.
Purpose: When a new functionality or feature is added to the project. Examples:
feat: add user authentication modulefeat: implement dark mode toggle
Purpose: When fixing a bug or issue in the existing code (resolving errors, crashes, unexpected behavior). Examples:
fix: resolve issue with login timeoutfix: correct calculation error in invoice total
Purpose: For documentation related changes only. No change in code logic. Examples:
docs: update README with setup instructionsdocs: add API usage examples
Purpose: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, Prettier/ESLint fixes). Examples:
style: format code with prettierstyle: fix indentation in user controller
Purpose: A code change that neither fixes a bug nor adds a feature (e.g., performance optimization, code cleanup). Examples:
refactor: improve performance of data processingrefactor: simplify authentication logic
Purpose: Adding missing tests or correcting existing tests. Examples:
test: add unit tests for user servicetest: fix failing payment integration test
Purpose: Changes to the build process, dependencies, or auxiliary tools/libraries (not tied to a specific feature/bug). Examples:
chore: update npm dependencieschore: configure environment variables
Purpose: When a feature or task is not yet complete but needs to be committed temporarily. (
wip: initial setup for new payment modulewip: working on dashboard redesign
Purpose: For a very small change, minor fix, or typography correction. Examples:
patch: update dependencies to latest versionspatch: fix typo in error message
Purpose: Changes that affect the build system, bundler, CI/CD, or external dependency configurations. Examples:
build: configure webpack for productionbuild: update Dockerfile for node 20
When submitting a Pull Request, please follow this pattern for the title and description:
PR Title Example: feat(auth): implement new login flow
Description Pattern:
## Description
<!-- Briefly describe what this PR adds or fixes and why it is needed -->
## Type of Change
- [ ] 🚀 New feature (feat)
- [ ] 🐛 Bug fix (fix)
- [ ] 📚 Documentation update (docs)
- [ ] 💅 Styling/formatting (style)
- [ ] ♻️ Refactor (refactor)
- [ ] 🧪 Tests (test)
- [ ] 🔧 Maintenance/Chore (chore)
## Checklist
- [ ] My code follows the code standards of this project.
- [ ] I have performed a self-review of my own code.
- [ ] I have commented my code, particularly in hard-to-understand areas.
- [ ] My changes generate no new warnings or errors (`npm run lint` & `npm run build`).
## Screenshots/Video (if applicable)
<!-- Add visual proof of your changes if they affect the UI -->- Fork the repository.
- Create a feature branch:
git checkout -b feature/my-new-feature - Make your changes and commit using the guidelines above:
git commit -m 'feat(scope): add new feature' - Push to your branch:
git push origin feature/my-new-feature - Submit a pull request using the provided pattern.
- Typescript: Strict typing is enforced. Avoid
anytypes where possible. - Styling: Use Tailwind utility classes primarily. Complex, highly reusable components can rely on global CSS custom properties defined in
app/globals.css. - GSAP: Use the
@gsap/reacthookuseGSAP()for animations, ensuring proper cleanup on unmount, and always use{ scope: ref }where appropriate to limit query selectors to the component instance.
This project is licensed under the MIT License.