ZAMANI – Kenya's Time Capsule: A retro TV-themed React app exploring global & Kenyan history via Wikipedia, NASA APOD, and curated local data. Features CRT scanline aesthetics, localStorage persistence, and Global/Kenya modes. Phase 1 of a 3-phase capstone project.
# ZAMANI – Kenya's Time Capsule
A retro TV-themed full-stack application that lets users explore global and Kenyan history by selecting any date. Features a custom Flask + PostgreSQL backend, curated Kenyan milestones, and a polished CRT broadcast aesthetic. Built as Phase 2 of a 3-phase capstone project.
## Live Demo
**View Production Frontend on Vercel**
*Note: Backend runs locally at
localhost for development. Render deployment link available upon request.*
## Setup Instructions
### Prerequisites
- Node.js v18+
- Python 3.10+
- PostgreSQL 14+
- pnpm (recommended), npm, or yarn
### Installation
```bash
# 1. Clone repository
git clone
github.com
cd Capstone-Zamani-App
# 2. Setup Backend
cd server
python -m venv venv && source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
createdb zamani_db # Or use pgAdmin to create database
python -m server.seed # Seeds PostgreSQL with Kenyan historical data
python -m server.app # Runs on
localhost
# 3. Setup Frontend (in new terminal)
cd ../client
pnpm install # or npm install
pnpm dev # Runs on
localhost
```
## API Endpoints & Resources
This application uses a custom Flask REST API replacing public Wikipedia/NASA endpoints from Phase 1:
|Method|Endpoint|Purpose|
|---|---|---|
|GET|`/api/v1/capsules/`|List all capsules (filter by ?date=YYYY-MM-DD)|
|POST|`/api/v1/capsules/`|Create new capsule|
|GET|`/api/v1/capsules/:id`|Get single capsule|
|PUT|`/api/v1/capsules/:id`|Update capsule|
|DELETE|`/api/v1/capsules/:id`|Delete capsule|
|GET|`/api/v1/tags/`|List all tags|
|POST|`/api/v1/tags/`|Create new tag|
**Relational Resources:** Capsules ↔ Tags (Many-to-Many via association table)
## Known Issues & Scope Notes
- **Authentication:** Phase 2 pitch, user authentication is scoped for Phase 3. The `user_id` column exists in the Capsules table as a foreign key placeholder. Current MVP focuses on …