Project Structure
This guide provides a detailed overview of the DISC Workshop Series Website's architecture and file organization.
Directory Structure
The project follows a modular structure optimized for Next.js development:
.
├── app/ # Next.js app directory
│ ├── about/ # About page routing
│ ├── content/ # Content page routing
│ ├── schedule/ # Schedule page routing
│ ├── layout.tsx # Root layout
│ └── page.tsx # Home page
├── components/ # Reusable components
│ ├── markdown/ # MDX components
│ ├── ui/ # UI components
│ └── contexts/ # React contexts
├── contents/ # MDX content files
│ ├── about/ # About section
│ ├── content/ # Main content
│ └── schedule/ # Schedule content
├── lib/ # Utilities
├── public/ # Static assets
└── styles/ # Global styles
Key Directories Explained
App Directory (/app)
The app directory contains the core Next.js application logic:
-
about/: About page routing and components
layout.tsx: Layout for about pagespage.tsx: About page implementation
-
content/: Main content routing
[[...slug]]/page.tsx: Dynamic routing for contentlayout.tsx: Content pages layout
-
schedule/: Workshop schedule implementation
- Similar structure to content directory
Components Directory (/components)
Contains all reusable UI components:
Markdown Components (/components/markdown)
copy.tsx: Copy button functionalityimage.tsx: Image renderinglink.tsx: Link handlingnote.tsx: Note blockspre.tsx: Code block handlingstepper.tsx: Step-by-step guides
UI Components (/components/ui)
accordion.tsx: Collapsible sectionsavatar.tsx: User avatarsbreadcrumb.tsx: Navigation breadcrumbsbutton.tsx: Button componentsdialog.tsx: Modal dialogsdropdown-menu.tsx: Dropdown menussheet.tsx: Slide-out panelstabs.tsx: Tab navigation
Navigation Components
Leftbar.tsx: Left sidebar navigationnavbar.tsx: Top navigation barmenu-bar.tsx: Mobile menupagination.tsx: Content pagination
Utility Components
search.tsx: Search functionalitytheme-toggle.tsx: Dark/light mode toggletoc.tsx: Table of contents
Contents Directory (/contents)
Organized content in MDX format:
contents/
├── about/
│ └── index.mdx
├── content/
│ ├── assignments/
│ │ └── [assignment-1...9]/
│ ├── getting-started/
│ │ ├── faq/
│ │ ├── introduction/
│ │ └── quick-start-guide/
│ └── workshops/
│ └── [workshop-1...9]/
└── schedule/
└── index.mdx
Library Directory (/lib)
Utility functions and configurations:
markdown.ts: MDX processing utilitiesroutes-config.ts: Route configurationsutils.ts: General utilities
Configuration Files
Key configuration files include:
next.config.mjs: Next.js configurationtailwind.config.ts: Tailwind CSS configurationtsconfig.json: TypeScript configurationcomponents.json: UI component configurations
Static Assets
The /public directory contains:
disc-logo.png: DISC logopublic-og.png: Open Graph image- Other static assets
Style System
The project uses a combination of:
- Tailwind CSS: Utility-first styling
- Global CSS: In
styles/globals.css - Syntax Highlighting: In
styles/syntax.css
Best Practices
When working with this structure:
-
Component Organization
- Keep components focused and single-purpose
- Use proper naming conventions
- Group related components together
-
Content Management
- Follow MDX file structure
- Keep content organized in appropriate directories
- Use consistent frontmatter
-
Code Organization
- Follow TypeScript best practices
- Keep utility functions in
/lib - Use proper imports/exports
Further Reading
Contributing
When adding new components or content:
- Follow the existing directory structure
- Use appropriate naming conventions
- Update relevant documentation
- Add necessary tests
- Follow the established coding style