Skip to content

team-pass/FIDO-login

Repository files navigation

Team Pass Logo

🔐 FIDO-Login

License Build Status GitHub contributors

A FIDO-compliant web app that has biometric authentication capabilities. Built using Flask, Bootstrap, and the Web Authentication API.

🗺 Project Layout

  • web: The Flask Web App
    • fido_app/: The Flask web app, which handles HTTP request processing and frontend-database interaction
      • templates/: The HTML files for the login, registration, and profile pages
      • static/: Assets for our webpages, such as images, JS scripts, and CSS stylesheets
    • wsgi.py: The driving code for the server (just call python wsgi.py)
  • docker-compose.yml: Orchestration for the flask app + MariaDB server
  • Caddyfile: Reverse HTTPS proxy (see Caddy's webpage)
  • fido_app.service: Systemd service for starting the web server using docker-compose on system startup (used on production servers)
  • .github/workflows: GitHub Actions workflow definitions

🚀 Quick Start

Development

cd web
pip install -r requirements.txt # Downloads all required Python packages
python setup-db.py              # Creates a test database
python wsgi.py                  # Runs the server in development mode

Note: It's recommended to install Python packages on a per-project basis within virtual environments. Flask provides a quick explanation of the motivation and process here.

If you get errors about connecting to the database, make sure your environment variables are properly configured. You can check out our contribution guide for more detailed setup instructions.

Production

docker-compose up

To setup on a production server, you must also add the fido_app.service to systemd (see the instructions in the file itself) and expose ports 80 and 443 in your server's firewall (e.g., using ufw) to allow for incoming HTTP(S) connections.

👨‍💻 Contribution Guide

If you want to add to this project, check out our contribution guide!

❓ FAQ

As the project progresses, we'll add more frequently asked questions to this section.

🔗 Useful Links

Git

Flask

HTML/CSS/JS