A full-stack library management app built with a React + TypeScript frontend and a Django REST API backend.
Not just a school project anymore β this started as a Django exam and slowly turned into something closer to a real full-stack app.
What started as an educational project ended up evolving into a complete system with:
- β¨ React + TypeScript SPA with a responsive UI
- π Django REST API with JWT authentication
- π Full library management (books, authors, borrowing system)
- π₯ User profiles + permissions
- π¨ Clean UI with a simple, custom design system
users-management/
βββ frontend/ β React + TypeScript SPA
βββ backend/ β Django REST API
βββ README.md β you are here
Inside each part:
- frontend β pages, components, hooks, API client, styles
- backend β Django apps, REST API, auth, models
cd backend
pip install -r requirements.txt
python manage.py migrate
python manage.py createsuperuser
python manage.py runserverRuns on:
http://localhost:8000
cd frontend
npm install
npm run devRuns on:
http://localhost:5173
- Browse full catalog
- View details
- Create / edit / delete books
- Track availability
- Manage authors
- Birth / death dates
- Linked books
- Profiles with extra info
- Permissions system
- Basic penalty logic
- Track borrowed books
- Due dates
- Overdue detection
- JWT login system
- Protected routes
- Token refresh handling
- React 18
- TypeScript
- Vite
- React Router
- Axios
- Vanilla CSS
- Django 6
- Django REST Framework
- SimpleJWT
- CORS headers
- SQLite (dev)
POST /biblioteca/login/{
"username": "user",
"password": "pass"
}Response:
{
"access": "jwt_token...",
"refresh": "jwt_token..."
}Books
- GET /catalog/api/books/
- POST /catalog/api/books/
- GET /catalog/api/books/{id}/
- PUT /catalog/api/books/{id}/
- DELETE /catalog/api/books/{id}/
Authors
- GET /catalog/api/authors/
- POST /catalog/api/authors/
Instances
- GET /catalog/api/bookinstances/
- PATCH /catalog/api/bookinstances/{id}/
Nothing fancy here β just a custom CSS setup:
- mobile-first layout
- flex + grid
- simple color system
- no UI frameworks
- JWT authentication
- role-based permissions
- CORS enabled for frontend
- token refresh flow
- User β authentication base
- Book β main catalog
- Author β book creators
- BookInstance β physical copies
- Perfil β extended user data
- PermisoE β permissions layer
When adding features:
- backend model
- serializer
- viewset
- frontend page
- API call
- route added
- SQLite is just for dev
- Django templates still exist but are legacy now
- backend and frontend are fully separated
Works on mobile + desktop:
- responsive layout
- touch-friendly UI
- adaptive navigation
- basic code splitting (React Router)
- optimized Django queries
- pagination support in API
- not production-ready DB setup (yet)
- some legacy Django views still there
- admin still uses default Django UI
This started as a Django exam project and slowly turned into a full-stack practice app covering:
- REST API design
- React SPA architecture
- authentication flows
- frontend/backend separation
If you touch it:
- keep structure consistent
- use TypeScript types
- donβt break backend contracts
- test both sides
- donβt leave half features
Educational project β not meant for production use.
β οΈ Note This is part of my learning path. More here: https://github.com/RubenMurciaeduca