3.4 KiB
C-base Nix Web Development
This project demonstrates advanced Nix capabilities for web development by creating a pixel-perfect clone of the c-base.org website using pure Nix as the development language.
Quick Start
```bash
Enter the development environment
nix develop
Generate the static site
generate-site
Start development server
dev-server
Or use nix run commands
nix run .#generate nix run .#dev ```
Architecture
Core System
- HTML DSL (
src/core/html.nix) - Pure Nix functions for HTML generation - CSS Generation (
src/core/css.nix) - CSS-in-Nix with utility functions - Component System (
src/core/components.nix) - Reusable UI components - Session Tracking (
src/core/session.nix) - Development analytics
Content & Styling
- Content Data (
src/data/content.nix) - Site content as Nix attribute sets - Page Templates (
src/pages/) - Page generation functions - Styles (
src/styles/) - CSS generation and theming
Build System
- Flake Configuration (
flake.nix) - Nix flake with build outputs - Development Tools - Hot-reload server and build scripts
- Session Analytics (
ai/) - JSON logs of development activity
Testing
```bash
Run syntax validation
bash scripts/test-nix-build.sh
Test individual components
nix-instantiate --eval test-build.nix ```
Features
Implemented
- ✅ Pure Nix HTML DSL
- ✅ CSS-in-Nix generation
- ✅ Component-based architecture
- ✅ Session tracking and analytics
- ✅ Development server with hot-reload
- ✅ Cyberpunk aesthetic matching c-base.org
Planned Extensions
- 🔄 Type checking system for component props
- 🔄 Advanced asset optimization pipeline
- 🔄 Interactive terminal simulator
- 🔄 Matrix rain animations
- 🔄 PWA capabilities
File Structure
``` ├── flake.nix # Main flake configuration ├── src/ │ ├── core/ # Core Nix modules │ │ ├── html.nix # HTML DSL functions │ │ ├── css.nix # CSS generation │ │ ├── components.nix # Component system │ │ └── session.nix # Session tracking │ ├── data/ # Content data │ │ └── content.nix # Site content │ ├── pages/ # Page templates │ │ └── index.nix # Homepage │ └── styles/ # Styling │ └── main.nix # Main stylesheet ├── ai/ # Session analytics │ ├── sessions/ # Build/dev session logs │ └── component-usage.json # Component usage data └── dist/ # Generated output ├── index.html └── styles.css ```
Development Workflow
- Edit Content: Modify
src/data/content.nixfor site content - Add Components: Create new components in
src/core/components.nix - Style Changes: Update styles in
src/styles/main.nix - Build & Test: Run
generate-siteto build and test changes - Develop: Use
dev-serverfor live development
Session Analytics
All development activity is automatically logged:
- Build performance metrics
- Component usage statistics
- Development session data
- Error tracking and debugging info
View logs in the ai/ directory for insights into development patterns and optimization opportunities.