How ishtiahmedtiham/crudify works
CRUDify is a FastAPI user-management backend. Requests enter through the application and versioned router, then reach user CRUD or login; those handlers validate inputs, enforce role checks, and use SQLAlchemy sessions and user records. Login verifies a password and issues a JWT, while protected requests decode the token and reload the user. The README also describes multi-database support as a separate branch capability, not as demonstrated functionality in this tree. Edges reflect excerpts, README statements, or SOURCE INDEX references; unsampled behavior is not inferred.
Main entry points: user_controller.py User CRUD · database.py Database sessions · auth.py Login · user_model.py User record
Components 17
Application routing
- Application bootstrap
main.py - Versioned router
src/routers/v1/router.py
Identity and access
- Login
src/authentication/auth.py - Login schemas
src/schemas/login_schema.py - Password utilities
src/utils/user_utils.py - JWT encoding
src/authentication/jwt.py - Current-user lookup
src/authentication/dependencies.py - Role permissions
src/authorization/permissions.py - Role definitions
src/authorization/roles.py
User management
- User CRUD
src/controllers/api/v1/user_controller.py - User schemas
src/schemas/user_schema.py - Email validator
src/validators/validator.py - User filters
src/filters/user_filters.py
Persistence
- Database sessions
src/config/database.py - User record
src/models/user_model.py
Other components
- API client
- PostgreSQL
Connections 29
- API client → Application bootstrap: sends requests
README.md - Application bootstrap → Versioned router: mounts routes
main.py - Application bootstrap → Database sessions: imports config
main.py - Versioned router → User CRUD: registers routes
src/routers/v1/router.py - Versioned router → Login: registers routes
src/routers/v1/router.py - User CRUD → User schemas: uses schemas
src/controllers/api/v1/user_controller.py - User CRUD → Email validator: validates email
src/controllers/api/v1/user_controller.py - User CRUD → User filters: accepts filters
src/controllers/api/v1/user_controller.py - User CRUD → Role permissions: requires roles
src/controllers/api/v1/user_controller.py - User CRUD → Role definitions: selects roles
src/controllers/api/v1/user_controller.py - User CRUD → Password utilities: hashes passwords
src/controllers/api/v1/user_controller.py - User CRUD → Database sessions: gets sessions
src/controllers/api/v1/user_controller.py - User CRUD → User record: queries and writes
src/controllers/api/v1/user_controller.py - Email validator → User schemas: validates input
src/validators/validator.py - Email validator → Database sessions: gets session
src/validators/validator.py - Email validator → User record: checks email
src/validators/validator.py - Login → Login schemas: accepts and returns
src/authentication/auth.py - Login → Database sessions: gets session
src/authentication/auth.py - Login → User record: looks up user
src/authentication/auth.py - Login → Password utilities: verifies password
src/authentication/auth.py - Login → JWT encoding: issues token
src/authentication/auth.py - Role permissions → Role definitions: checks roles
src/authorization/permissions.py - Role permissions → Current-user lookup: requires identity
src/authorization/permissions.py - Current-user lookup → JWT encoding: decodes token
src/authentication/dependencies.py - Current-user lookup → Database sessions: gets session
src/authentication/dependencies.py - Current-user lookup → User record: loads user
src/authentication/dependencies.py - Database sessions → PostgreSQL: connects to
src/config/database.py - Database sessions → User record: creates tables for
src/config/database.py - User record → Database sessions: uses declarative base
src/models/user_model.py