fullstack fastapi vuejs price aggregator
1.0.0
Preisaggregator für britische Supermärkte über Web Scraping. Dies wurde für mein Universitätsprojekt als MVP entwickelt, daher gibt es Aspekte, die nicht richtig funktionieren. Ich werde es möglicherweise in Zukunft aktualisieren.
Stellen Sie sicher, dass Docker und Node.js installiert sind.
docker-compose up --build -d
aus. Das startet das Backend und erstellt beim ersten Start alle notwendigen Container, was einige Minuten dauern kann.docker-compose exec backend bash
.python manage.py createdb
in der Bash-Shell aus.python manage.py seeddb
aus. Beachten Sie, dass alle Passwörter auf „Passwort“ festgelegt sindcd
in das Client-Verzeichnis ein, führen Sie npm install
aus, wodurch die erforderlichen Knotenmodule installiert werden.npm run serve
aus, um das Client-Frontend zu bedienen. URL | Beschreibung |
---|---|
0.0.0.0:8000/api | Backend-JSON-API |
0.0.0.0:8000/docs | Backend-OpenAPI/Swagger-generierte API-Referenzdokumentation |
0.0.0.0:8000/redoc | Alternative interaktive Dokumentation von ReDoc |
localhost:9527 | Frontend VueJS Single Page Application |
Das Backend enthält eine CLI, die stark von Netflix‘ Dispatch inspiriert ist.
typer
(derselbe Autor wie FastAPI) wurde zum Erstellen einer CLI für das Projekt verwendet und kann über manage.py aufgerufen werden.
Um Befehle auszuführen, benötigen Sie eine Shell, die im Backend-Container ausgeführt wird mit:
docker-compose run backend bash
So sehen Sie alle verfügbaren Befehle:
root@72293bee6b37:/app# python manage.py
Usage: manage.py [OPTIONS] COMMAND [ARGS]...
Options:
--help Show this message and exit.
Commands:
config Display application configuration.
createdb Creates an empty database.
createrole Add role to database.
createuser Create new user in the database.
develop Start a development server with reload.
dropdb Drop the existing database.
routes Display application routes and dependencies.
seeddb Add fake data to database.
shell Starts an interactive shell with app object imported.
root@72293bee6b37:/app# python manage.py routes
Application Endpoints
Path Methods Dependencies
----------------------------- --------- --------------------------------------------------------
/api/v1/users/ GET ['RoleChecker: Roles: admin,user']
/api/v1/users/ POST ['RoleChecker: Roles: admin,user']
/api/v1/users/{id} GET ['RoleChecker: Roles: admin,user']
/api/v1/users/{id} PUT ['RoleChecker: Roles: admin,user']
/api/v1/users/{id} DELETE ['RoleChecker: Roles: admin,user']
/api/v1/users/{id}/roles GET ['RoleChecker: Roles: admin,user']
/api/v1/users/{id}/roles PUT ['RoleChecker: Roles: admin,user']
/api/v1/users/{id}/shops GET ['RoleChecker: Roles: admin,user']
/api/v1/users/{id}/shops PUT ['RoleChecker: Roles: admin,user']
/api/v1/roles/ GET ['RoleChecker: Roles: admin,user']
/api/v1/roles/ POST ['RoleChecker: Roles: admin,user']
/api/v1/roles/{id} GET ['RoleChecker: Roles: admin,user']
/api/v1/roles/{id} PUT ['RoleChecker: Roles: admin,user']
/api/v1/roles/{id} DELETE ['RoleChecker: Roles: admin,user']
/api/v1/shops/ GET ['RoleChecker: Roles: admin,user']
/api/v1/shops/ POST ['RoleChecker: Roles: admin,user']
/api/v1/shops/{id} PUT ['RoleChecker: Roles: admin,user']
/api/v1/shops/{id} DELETE ['RoleChecker: Roles: admin,user']
/api/v1/shops/listings/ GET ['RoleChecker: Roles: admin,user']
/api/healthcheck GET []
python manage.py config
Application Configuration
Setting Value(s)
-------------------------- --------------------------------------------------------------------
APP_DIR /app/app
STATIC_DIR /app/app/static
EMAIL_TEMPLATES_DIR /app/app/static/email-templates/html
PROJECT_NAME Fastapi Backend
SERVER_HOST 0.0.0.0
CORS_WHITELIST ['http://localhost', 'http://localhost:8000', 'http://0.0.0.0:8000']
FASTAPI_ENV development
DEBUG False
LOG_LEVEL debug
FIRST_SUPERUSER [email protected]
FIRST_SUPERUSER_PASSWORD a5dbf43e07f4d19e5b73bc89a8f74
USERS_OPEN_REGISTRATION True
SECRET_KEY **********
JWT_AUTH_LIFETIME_SECONDS 604800
JWT_EMAIL_LIFETIME_SECONDS 3600
SMTP_USER [email protected]
SMTP_PASSWORD **********
SMTP_TLS False
SMTP_SSL False
SMTP_HOST mailhog
SMTP_PORT 1025
POSTGRES_USER postgres
POSTGRES_PASSWORD **********
POSTGRES_HOST postgres
POSTGRES_PORT 5432
POSTGRES_DB fastapi_backend