2024-11-06 20:56:55 -08:00
|
|
|
# availabili.tf
|
|
|
|
|
|
|
|
Scheduling for TF2
|
|
|
|
|
2024-11-21 18:24:35 -08:00
|
|
|
## Tech Stack
|
|
|
|
|
|
|
|
- **Frontend:** [Vue 3](https://v3.vuejs.org/) + TypeScript
|
|
|
|
- **State Management:** [Pinia](https://pinia.vuejs.org/)
|
|
|
|
- **Backend:** [Flask](https://flask.palletsprojects.com/) + Python
|
|
|
|
- **ORM:** [SQLAlchemy](https://www.sqlalchemy.org/)
|
|
|
|
- **Validation:** [Pydantic](https://pydantic-docs.helpmanual.io/)
|
|
|
|
- [spectree](https://spectree.readthedocs.io/en/latest/index.html) for
|
|
|
|
OpenAPI documentation
|
|
|
|
- [Flask-Migrate](https://flask-migrate.readthedocs.io/en/latest/)
|
|
|
|
(Alembic) for database migrations
|
2024-12-10 18:18:40 -08:00
|
|
|
- [Celery](https://docs.celeryproject.org/en/stable/) for async tasks
|
|
|
|
- [Redis](https://redis.io/) for Celery broker
|
2024-11-21 18:24:35 -08:00
|
|
|
- **Database:** [PostgreSQL 17.1](https://www.postgresql.org/docs/17/index.html)
|
|
|
|
(production) / SQLite (development)
|
2024-11-06 20:56:55 -08:00
|
|
|
|
2024-12-11 18:04:53 -08:00
|
|
|
## Setup (development, SQLite3)
|
2024-11-06 20:56:55 -08:00
|
|
|
|
2024-12-11 20:34:03 -08:00
|
|
|
Build the frontend app:
|
|
|
|
|
|
|
|
```sh
|
|
|
|
cd availabili.tf
|
|
|
|
npm install
|
|
|
|
npm run build
|
|
|
|
```
|
|
|
|
|
|
|
|
Build the rest of the containers and perform initial database migration:
|
|
|
|
|
2024-11-06 20:56:55 -08:00
|
|
|
```sh
|
2024-12-10 18:18:40 -08:00
|
|
|
docker compose build
|
2024-11-21 18:24:35 -08:00
|
|
|
docker compose up
|
2024-12-10 18:18:40 -08:00
|
|
|
DATABASE_URI=sqlite:///db.sqlite3 flask db upgrade
|
2024-11-06 20:56:55 -08:00
|
|
|
```
|
|
|
|
|
2024-11-21 18:24:35 -08:00
|
|
|
App will run at port 8000.
|
2024-11-06 20:56:55 -08:00
|
|
|
|
2024-12-11 18:04:53 -08:00
|
|
|
## Setup (production, Postgres)
|
2024-12-10 18:18:40 -08:00
|
|
|
|
|
|
|
Build the frontend app:
|
|
|
|
|
|
|
|
```sh
|
|
|
|
cd availabili.tf
|
2024-12-11 20:34:03 -08:00
|
|
|
npm install
|
2024-12-10 18:18:40 -08:00
|
|
|
npm run build
|
|
|
|
```
|
|
|
|
|
|
|
|
Build the rest of the containers:
|
|
|
|
|
|
|
|
```sh
|
|
|
|
docker compose -f docker-compose.prod.yml build
|
|
|
|
docker compose -f docker-compose.prod.yml up
|
|
|
|
```
|
|
|
|
|
|
|
|
Perform initial database migration:
|
|
|
|
|
|
|
|
```sh
|
|
|
|
docker exec -it backend bash
|
|
|
|
flask db upgrade
|
|
|
|
```
|
|
|
|
|
2024-11-21 18:24:35 -08:00
|
|
|
## OpenAPI
|
2024-11-06 20:56:55 -08:00
|
|
|
|
|
|
|
The backend will automatically serve its OpenAPI-compliant spec at
|
|
|
|
`/apidoc/openapi.json` which can also be viewed at `/apidoc/redoc` or
|
|
|
|
`/apidoc/swagger` or `/apidoc/scalar`.
|
|
|
|
|
|
|
|
To generate the frontend client:
|
|
|
|
|
|
|
|
```sh
|
2024-11-21 18:24:35 -08:00
|
|
|
npm run openapi-generate
|
2024-11-06 20:56:55 -08:00
|
|
|
```
|