# Memory Bank: Bitpoll Nix Flake This memory bank contains comprehensive documentation for the Bitpoll Nix flake project. These files serve as the complete context for understanding and working with this project. ## File Structure ### Core Files (Required) 1. **`projectbrief.md`** - Foundation document defining project scope, requirements, and success criteria 2. **`productContext.md`** - Why the project exists, problems it solves, and user experience goals 3. **`systemPatterns.md`** - Technical architecture, design patterns, and implementation details 4. **`techContext.md`** - Technology stack, dependencies, tools, and technical constraints 5. **`activeContext.md`** - Current work focus, recent changes, decisions, and project insights 6. **`progress.md`** - What works, what's left to build, current status, and future roadmap ## Project Summary **Bitpoll Nix Flake** is a comprehensive packaging solution that brings the Bitpoll Django web application to the Nix ecosystem. It provides: - **Complete Nix Package**: Builds Bitpoll with all dependencies - **NixOS Service Module**: Production-ready systemd service with security hardening - **Cross-platform Support**: Development on macOS, deployment on Linux - **Security-first Design**: Comprehensive security measures built-in - **Production Ready**: Automatic migrations, static file management, and proper data persistence ## Current Status: PRODUCTION READY ✅ The project is **complete and functional** with all core requirements met: - Package builds successfully - NixOS service works reliably - Security hardening implemented - Documentation comprehensive - Ready for production deployment ## Key Technical Decisions 1. **Hybrid Dependency Strategy**: nixpkgs packages + pip for comprehensive coverage 2. **Build-time Configuration**: Generated settings with runtime overrides 3. **Security-first Design**: Dedicated user with systemd hardening 4. **Single Data Directory**: `/var/lib/bitpoll` for easy backup/restore ## Usage Quick Reference ```bash # Build package nix build # Run development server nix run # Management commands nix run .#bitpoll-manage -- migrate # Development environment nix develop # NixOS deployment services.bitpoll.enable = true; ``` ## Memory Bank Usage When working on this project: 1. **Start by reading ALL memory bank files** - they build upon each other 2. **Update activeContext.md** when making significant changes 3. **Update progress.md** when completing features or fixing issues 4. **Maintain other files** when architecture or requirements change The memory bank ensures continuity and context preservation across development sessions. --- *Last Updated: January 7, 2025* *Project Status: Production Ready* *Memory Bank Version: 1.0*