This is a minimilistic web application that provides the user to provide feedback.
- Submit feedback
- View all feedbacks
- Python Tornado as Web server and framework (Python 3.7, Tornado latest)
- VueJS for frontend scripting (VueJS latest)
- MySQL as database service (MySQL 5.7)
- Minio for log backups (Minio latest)
If you are using docker, it becomes really simple to bring up the application and its required components.
git clone https://github.com/gbakthavatchalam/feedback-system.git
cd feedback-system/
docker-compose up
- For application, Open the browser by pointing to
http://localhost:8888
- For
Minio
, Open the browser by pointing tohttp://localhost:9000
. Creds from docker-compose file can be used for logging in.
"/" GET Lets you to submit feedback
"/list" GET Lets you to view all feedbacks
"/api/feedback" GET - Gets list of all feedbacks
"/api/feedback" POST - Saves the feedback
MySQL
&Minio
credentials are stored in thedocker-compose.yml
- Bucket names for
Minio
can be configurated insettings.py
- Log settings can be configured in
settings.py
- Credentials can be moved and passed in as environment variables to the
docker-compose.yml
file - Optimize the frontend to be a
SPA(Single Page Application)
by using client routing (Vue Router
) - For tornado webapp, use a config file and parse options from config file rather than
settings.py
- Application needs some fine-tuning for better exception handling and reporting.
- In backend, logs are backed up in 2 different ways.
- One is by implementing a custom
TimedRotatingFileHandler
which saves the log file toMinio
before it tries to clean up the old files. - Other way, we are storing metadata related to individual requests as JSON files in a separate bucket on
Minio