Kue is a cloud-native writing journal with a Flask JSON API and a Vite + React frontend. Flask owns persistence and API behavior; React owns every screen and interaction. There are no Flask templates or server-rendered pages.
app.py: Flask API backed by Postgresfrontend/: Vite + React single-page applicationschema.sql,init_db.py,seed.py: database setup and sample contentinfrastructure/: Terraform for AWS/EKSk8s/: Kubernetes manifests
The API is available under /api:
GET /api/posts?q=&page=: paginated searchPOST /api/posts: create a postGET /api/posts/<id>andGET /api/posts/slug/<slug>: read a postPUT /api/posts/<id>: update a postDELETE /api/posts/<id>: delete a postGET /api/about: about page contentGET /healthzandGET /metrics: operational endpoints
Start the Flask API from the repository root:
python app.pyIn a second terminal, install and start the frontend:
cd frontend
npm install
npm run devOpen http://localhost:5173. Vite proxies API requests to http://localhost:8080. Set VITE_API_URL when the frontend and backend are deployed at different origins.
The backend reads either DATABASE_URL or the individual PG* environment variables. Copy .env.example to .env and fill in local values. Never commit .env.
pytest -q
cd frontend && npm run buildBuild the API image from the repository root:
docker build -t kue-api .Build the frontend image from frontend/:
cd frontend
docker build --build-arg VITE_API_URL=https://api.example.com -t kue-frontend .The infrastructure and Kubernetes files remain available for deploying the two services independently.
This project is licensed under the MIT License.