NOTE
This is a mirror of a GitLab repository.
Dryvo
Dryvo is a unique solution for the driving lessons industry. Our aim is to save the teacherโs time and to increase revenues, and for the students to have control on the entire process. Dryvo is changing the way driving lessons are being managed.
The problem
Teachers spend most of their time dealing with phone calls from students, scheduling lessons and planning their routes and topics for each student. Students are having a hard time keeping track of their payments, lessons, and progress. They usually have no idea when they are ready for a driving test or what topics they will be learning next.
The solution
Dryvo is a platform for driving lessons scheduling and management. We aim for teachers and students to have control on the entire process - from co-scheduling lessons to tracking payments and topics. Students can track their progress, see what topics they have learned and control their payment balance. Teachers, on the other hand, can focus on each lesson without having to worry about scheduling lessons or dealing with payments ahead. In addition to the easier interaction service we offer, we plan on adding many more features - smart lessons scheduler, where the machine will know the teacher preferences and can automatically decide lesson times. Moreover, an efficient route-planner so the teacher can save valuable time and cut on gas expenses.
Key features
- Smart scheduling by:
- Student & appointments locations
- Traffic and arrivals time
- Student requirements
- Internal rules taught by dozens of teachers
- Teacher work days
- Lesson tracking
- Payments tracking
- Lesson topics
- PDF reports for students
- Teacher reviews
Installation
Dryvo can be installed using pip
similar to other Python packages. If you want to use the PDF reporting feature, you would have to install Weasyprint.
$ pip install .
Or with installing the tests requirements:
$ pip install .[test]
Getting Started
$ flask run
Dryvo uses Flask as a web framework, therefore running the app is the same as any other Flask app. If you want to use a production server such as gunicorn
, you can use the command below:
$ gunicorn --preload --chdir ./server "app:create_app()"
Running tests
$ python run -m pytest
Structure Explanation
โโโ LICENSE
โโโ Procfile
โโโ README.md
โโโ logs
โโโ messages.pot
โโโ migrations - Database migrations using Alembic
โโโ server
โย ย โโโ __init__.py
โย ย โโโ api - Everything regarding the API endpoints
โย ย โย ย โโโ __init__.py
โย ย โย ย โโโ babel.py
โย ย โย ย โโโ blueprints - Flask blueprints, endpoints divided by logic
โย ย โย ย โโโ database
โย ย โย ย โย ย โโโ __init__.py
โย ย โย ย โย ย โโโ consts.py
โย ย โย ย โย ย โโโ database.py
โย ย โย ย โย ย โโโ mixins.py
โย ย โย ย โย ย โโโ models - Database models, where each file is essentialy a table
โย ย โย ย โย ย โโโ utils.py
โย ย โย ย โโโ gmaps.py - Google Maps integration
โย ย โย ย โโโ push_notifications.py
โย ย โย ย โโโ rules - Custom student rules for scheduling
โย ย โย ย โโโ social - Social networks integration
โย ย โย ย โโโ utils.py
โย ย โโโ app.py - Main entry point for the application
โย ย โโโ app_config.py
โย ย โโโ babel.cfg
โย ย โโโ consts.py
โย ย โโโ error_handling.py
โย ย โโโ extensions.py
โย ย โโโ static
โย ย โโโ templates - PDF reports templates (HTML)
โย ย โย ย โโโ reports
โย ย โโโ translations
โโโ setup.cfg
โโโ setup.py
โโโ tests