Project with the purpose of learning Python and Flask framework. The project is inspired in the final exercise from "Learn Python 3 the Hard Way" (Zed Shaw) and in the exercises from "Flask Web Development: Developing Web Applications with Python" (Miguel Grinberg).
Three room based games were implemented:
- Escape Gothon: simple storytelling webgame adapted from Zed Shaw's book (simple example)
- Riddle Master: a riddle game
- World Flag Quiz: country's flag quiz game
- Login system using
flask-login
- Forms and validators using
flask-wtf
- Password encryption using
flash-bcrypt
- ORM using
flask-sqlalchemy
withSQLite
- Database migration using
flask-migrate
. The migration commands may be accessed through themanage.py
(flask-scripts
functionality) - E-mail system using
flask-mail
(sends an e-mail when user is registered) - Locale of timestamps (UTC to client time) is managed using
flask-moment
- Server-side sessions using
flask-session
(fork fromrayluo/flask-session
to fix werkzeug incompatibility) - Environments configuration (
development
,testing
, andproduction
) - Blueprints (
main
,auth
,game
) are being used. - Unitary tests using Pytest
- PEP 8 check using
pycodestyle
- Coverage test using
pytest-cov
- Homepage
- Authentication System:
- Login page
- Signup page
- Confirmation e-mail. Tokens are generated using JSON Web Signature from
itsdangerous
- Unconfirmed e-mail page. It is possible to resend the confirmation e-mail if expired or invalid
- Games: Gothon | Riddle Master | World Flags Quiz
- Ranking page
- Images of this project may be found in the
screens
folder
- User:
- Recover password system
- Avatar image using Gravatar API
- Profile page: update avatar image and change password
- Increase the coverage of automation tests