# Project Brief: Bitpoll Nix Flake ## Project Overview This project provides a comprehensive Nix flake for packaging and deploying Bitpoll, a web application for scheduling meetings and general polling. The flake enables easy installation, configuration, and deployment of Bitpoll on NixOS systems. ## Core Requirements ### Primary Goals 1. **Package Bitpoll for Nix**: Create a working Nix package for the Bitpoll Django application 2. **NixOS Service Module**: Provide a complete systemd service configuration for production deployment 3. **Cross-platform Support**: Ensure compatibility with Linux and macOS development environments 4. **Security Hardening**: Implement proper user isolation and security measures 5. **Data Persistence**: Store all application data in `/var/lib/bitpoll` as specified ### Technical Requirements - Use NixOS 25.05 with pinned dependencies - Build from Bitpoll master branch (commit 4a3e6a5) - Support both development and production environments - Include all necessary Python dependencies - Provide management command access - Enable proper Django configuration ### Functional Requirements - Web server capability for hosting Bitpoll - Database management (SQLite by default, PostgreSQL support) - Static file serving - User authentication and management - Meeting scheduling and polling functionality - Secure configuration management ## Success Criteria - ✅ Nix flake builds successfully - ✅ Package runs without dependency errors - ✅ NixOS service deploys and starts correctly - ✅ All Django management commands work - ✅ Web interface accessible and functional - ✅ Data persists in designated directory - ✅ Security hardening implemented ## Constraints - Must use Nix/NixOS ecosystem exclusively - Follow Nix packaging best practices - Maintain compatibility with upstream Bitpoll - Ensure reproducible builds - Support standard Django deployment patterns ## Stakeholders - **Primary**: NixOS users wanting to deploy Bitpoll - **Secondary**: Developers contributing to Bitpoll packaging - **Tertiary**: System administrators managing Bitpoll deployments