bump project
This commit is contained in:
76
README.md
76
README.md
@@ -1,2 +1,74 @@
|
||||
# face-attendance
|
||||
Attendance registration project with facial recognition.
|
||||
# Face Attendance
|
||||
|
||||
A modern Flask attendance application with staff authentication, role-based access control, face enrollment, camera-based recognition, and attendance reporting.
|
||||
|
||||
## Roles
|
||||
|
||||
- `admin`: manages staff accounts, enrolls people, records attendance, and views reports.
|
||||
- `operator`: enrolls people, uses the attendance kiosk, and views reports.
|
||||
- `viewer`: read-only access to people and attendance reports.
|
||||
|
||||
Only admins can create staff accounts.
|
||||
|
||||
## Requirements
|
||||
|
||||
- Python 3.11 or 3.12 is recommended for production.
|
||||
- Native build prerequisites for `face-recognition`/`dlib` may be required by your OS.
|
||||
- A production WSGI server such as Gunicorn on Linux or Waitress on Windows.
|
||||
|
||||
## Setup
|
||||
|
||||
```powershell
|
||||
py -3.12 -m venv .venv
|
||||
.\.venv\Scripts\Activate.ps1
|
||||
pip install -r requirements.txt
|
||||
Copy-Item .env.example .env
|
||||
```
|
||||
|
||||
Edit `.env` and set a strong `SECRET_KEY`. For production, set `APP_ENV=production` and use a durable database URL.
|
||||
|
||||
## Database
|
||||
|
||||
Initialize the database with migrations:
|
||||
|
||||
```powershell
|
||||
$env:FLASK_APP = "wsgi:app"
|
||||
flask db upgrade
|
||||
flask create-admin
|
||||
```
|
||||
|
||||
## Run Locally
|
||||
|
||||
```powershell
|
||||
$env:FLASK_APP = "wsgi:app"
|
||||
flask run
|
||||
```
|
||||
|
||||
Open `http://127.0.0.1:5000` and sign in with the admin account created above.
|
||||
|
||||
## Tests
|
||||
|
||||
```powershell
|
||||
pytest
|
||||
```
|
||||
|
||||
The tests use an isolated SQLite database and disable CSRF only for test requests.
|
||||
|
||||
## Production Notes
|
||||
|
||||
- Use HTTPS. Production config enables secure cookies.
|
||||
- Set `SECRET_KEY`, `DATABASE_URL`, and `APP_ENV=production`.
|
||||
- Run `flask db upgrade` during deployment.
|
||||
- Run behind a reverse proxy that forwards HTTPS headers correctly.
|
||||
- Treat face encodings as biometric data. Restrict database access, define a retention policy, and back up securely.
|
||||
|
||||
## What Changed
|
||||
|
||||
- Replaced the legacy single-file Flask script with an application factory and Blueprints.
|
||||
- Added SQLAlchemy models and Alembic migrations.
|
||||
- Added Flask-Login authentication, admin-created accounts, password hashing, and role checks.
|
||||
- Replaced raw SQL with ORM queries.
|
||||
- Removed global enrollment state.
|
||||
- Rebuilt the UI in English with reusable templates and responsive Bootstrap-based layouts.
|
||||
- Added CSRF protection, secure cookie settings, security headers, validation, and error pages.
|
||||
- Added pytest coverage for authentication, roles, models, and attendance recording.
|
||||
|
||||
Reference in New Issue
Block a user