auth-system-smtp / README.md
yamiclaws's picture
Upload folder using huggingface_hub
4f8b3ca verified
|
Raw
History Blame Contribute Delete
1.86 kB
metadata
title: Secure Auth System
emoji: πŸ›‘οΈ
colorFrom: gray
colorTo: gray
sdk: docker
app_port: 7860
pinned: false

Secure Authentication System with SMTP OTP Verification

A beginner-friendly authentication system with FastAPI backend and React frontend. Implements email OTP verification, JWT tokens, and password reset.

Features

  • SMTP Email OTP Verification (register + forgot password)
  • Console fallback when SMTP is not configured
  • JWT Access & Refresh Token system with rotation
  • Token revocation on logout
  • Bcrypt password hashing
  • Rate limiting & request logging
  • Minimal dark-theme UI

Tech Stack

  • Backend: FastAPI, SQLite, SQLAlchemy, Pydantic, bcrypt, python-jose
  • Frontend: React 18, Vite, plain CSS (no router, no axios)

Project Structure

β”œβ”€β”€ Dockerfile
β”œβ”€β”€ backend/
β”‚   β”œβ”€β”€ main.py            # Single file: all routes, models, auth, email
β”‚   β”œβ”€β”€ requirements.txt
β”‚   β”œβ”€β”€ .env
β”‚   └── users.db
└── frontend/
    β”œβ”€β”€ package.json
    β”œβ”€β”€ vite.config.js
    β”œβ”€β”€ index.html
    └── src/
        β”œβ”€β”€ main.jsx
        β”œβ”€β”€ App.jsx        # Single component, all pages
        β”œβ”€β”€ App.css
        └── index.css

Local Development

Backend

cd backend
pip install -r requirements.txt
uvicorn main:app --reload --port 8000

Frontend

cd frontend
npm install
npm run dev

Deploy to Hugging Face Spaces

  1. Create a new Space at huggingface.co with Docker SDK
  2. Add secrets in Settings > Variables and secrets:
    • SECRET_KEY = any random string
    • DATABASE_URL = sqlite:////app/users.db
    • SMTP_SERVER = smtp.gmail.com
    • SMTP_PORT = 587
    • SMTP_USER = your gmail
    • SMTP_PASSWORD = your app password
  3. Push code to the Space repo