Kinlia is a tiny event app built for vibes. It blends a Python API and a mobile app so you can learn how the pieces of a modern stack talk to each other.
This repo is friendly on purpose: the goal is to let you poke around, make small changes and see what happens.
| Piece | Why it exists |
|---|---|
| FastAPI backend | Python is easy to read and FastAPI gives you a web API with hardly any boilerplate. It also generates docs automatically so you can see and test the endpoints. |
| Expo + React Native frontend | One set of JavaScript files runs on both iOS and Android. Expo handles the scary native tooling so you can focus on screens and styles. |
| Docker Compose | Containers keep all services isolated. One command starts everything so you don't chase missing packages. |
| SQLite by default | For learning you just need a file‑based database. When the app grows you can switch DATABASE_URL to Postgres without touching the code. |
| Redis + RQ worker | Some jobs (like matching people to events) run in the background. A worker lets the API respond fast while heavy work happens elsewhere. |
Frontend (Expo/React Native) ⇄ Backend API (FastAPI) ⇄ Database (SQLite/Postgres)
↳ Background Worker (RQ + Redis)
- The frontend asks the backend for data or sends user actions.
- The backend reads/writes the database and sometimes kicks off a background worker task.
- The worker can store extra data (like embeddings) and the cycle continues.
- Install Docker
- Why: It bundles all dependencies. No Python or Node installs needed.
- Copy the example environment file
cp .env.example .env- Why: Secrets and config live outside the code so you can change them without editing files.
- Run the stack
make devordocker-compose up- Why: Spins up the API, the mobile dev server and the worker in one go.
- Open the app
- Visit http://localhost:3412 in a browser or the Expo Go app.
- The API is at http://localhost:8194.
backend/ → FastAPI service (all the Python code)
frontend/ → Expo React Native app (all the screens)
shared/ → Placeholder for code used by both sides
Makefile → Handy shortcuts like `make dev`
docker-compose.yml → Defines how the services run together
Ready to keep vibing? Check out the Next Steps & Implementation Plan.
Backend tests use pytest and live in backend/tests. Run them with:
cd backend
pytestQuestions, ideas or feedback are welcome. Drop notes, open issues, or experiment in your own fork.