# Baby Sleep Tracker A self-hosted web application for tracking infant sleep sessions, optimized for Raspberry Pi 4 (ARM64). ## Features - **Tracker Tab**: Start and stop sleep sessions with a single click. Adjust start/end times easily. - **Stats Tab**: Visualize sleep patterns with daily summaries (day vs. night), continuous time-slot grids, and wakeup/bedtime trend plots. - **Responsive Design**: Built for mobile use via a clean, thumb-friendly UI. - **Dockerized**: Easy deployment using Docker Compose. ## Tech Stack - **Frontend**: React 19, Vite 6, TypeScript, Tailwind CSS v4, Recharts, TanStack Query. - **Backend**: Python 3.12+, FastAPI, SQLModel (SQLAlchemy + P/Dantic), SQLite. - **Deployment**: Docker, Docker Compose. ## Getting Started ### Prerequisites - [Docker](https://docs.docker.com/get-docker/) - [Docker Compose](https://docs.docker.com/compose/install/) *Note: If building on an x86 machine for ARM64 (Raspberry Pi), ensure you use `docker buildx`.* ### Running with Docker Compose 1. Clone the repository. 2. Navigate to the project root. 3. Run the following command: ```bash docker compose up --build ``` The application will be available at: - **Frontend**: [http://localhost](http://localhost) - **Backend API**: [http://localhost:8000](http://localhost:8000) ### Development Setup #### Backend Requires `uv` and Python 3.14+. ```bash cd backend uv sync uv run uvicorn app.main:app --reload ``` Run tests: ```bash uv run pytest ``` #### Frontend ```bash cd frontend npm install npm run dev ``` Run tests: ```bash npm run test ``` ## Project Structure - `backend/`: FastAPI application, models, and API routes. - `frontend/`: React application with components and hooks. - `docker-compose.yml`: Orchestration for the full stack.