
Join me in this course as I build an MVP to solve apartment management challenges, including issue reporting, maintenance, and technician tracking, by replacing problematic WhatsApp processes.
Demonstrates a full-stack django with react MVP end-to-end, covering signup, authentication, posts, issue tracking, technicians, admin workflows, and notes on production deployment and testing.
Initialize git for a Django project, create a Python .gitignore with npx, ignore dot envs but include env.example, start the Django project, and commit the initial setup.
Here are the packages that were installed in this lecture, if you don't want to type it out:
pipenv install python-dotenv==1.0.1 djangorestframework==3.15.0 django-autoslug==1.9.9 django-countries==7.5.1 django-phonenumber-field==7.3.0 phonenumbers==8.13.32 drf-yasg==1.21.7 Pillow==
10.2.0 argon2-cffi==23.1.0 djoser==2.2.2 django-taggit==5.0.1 django-filter==24.1 django-celery-email==3.0.0 cloudinary==1.39.1 django-celery-beat==2.6.0 redis==5.0.3 celery==5.3.6 flower==2.0.1
Configure django with docker using docker desktop, docker engine, docker compose, and the Portainer extension, then build multi-stage dockerfiles with python base images, wheels, and entrypoint scripts.
Create a start script that migrates models, collects static files, and runs the Django server on 0.0.0.0:8000, while configuring dockerignore to exclude unnecessary files.
Create a custom Django user model in the users app with a pseudo primary key via UUID, using a custom user manager and email as the unique identifier.
Set up redoc API documentation for a Django REST framework project, configure OpenAPI info and public access, and customize the admin site.
Configure celery in a Django project by creating a celery app, connecting to Redis as broker and result backend, auto-discovering tasks, and enabling celery beat for scheduling.
Summarizes a docker-compose setup for celery and redis in Django, reusing API config via anchors and defining celery worker, celery bit, and flower with start scripts on port 5555.
Explore building a timestamped abstract model and a reusable content view model in Django, using a generic foreign key, content types, and user tracking, then register the admin interface.
Explore configuring a Django profile model with a Cloudinary avatar, set up Cloudinary credentials in env, link a 1 to 1 profile to user, and include slug generation and occupation.
Implement a Django post-save signal to auto-create a user profile on new user creation, using signals.py, a receiver decorator, and logging, with admin registration and migrations.
Differentiate authentication from authorization and explain how access and refresh tokens enable secure API calls. Explore JWT bearer tokens, short lifespans, and refresh token rotation with reuse detection.
Implement token-based authentication with the Jozsa package, returning access and refresh tokens as http-only cookies and using a custom Django Rest Framework authentication class.
I previously lived in a large apartment complex with over 500 apartment units, all owned by a single landlord.
The complex was plagued by inefficient service delivery, issue reporting, and maintenance operations.
Tenants were expected to report problems via a shared WhatsApp account, which often resulted in messages going unread, being read too late, or being forgotten due to the high volume of incoming messages.
The landlord’s technicians(who included plumbers,carpenters, masons, electricians, roofers et-cetera) who were responsible for addressing various issues, frequently ignored calls for assistance or provided false excuses about their availability. Tracking the technicians' whereabouts and providing feedback to the landlord on their work was a challenging task.
To make matters worse, some tenants used the same WhatsApp account to advertise their goods that they were selling(such as food, clothes et-cetera), causing further confusion and hindering the issue reporting process.
Reporting misbehaving neighbors who violated the tenancy agreement and were a nuisance to other neighbors, also proved to be difficult.
I finally had enough and moved out of that place… which kept me wondering…if I was fortunate enough to somehow get money in the future and was able to build my own set of apartments, just like my former landlord did, what would I do differently?
Welcome…. Join me in this course as I build an MVP(which is a minimum viable product), to solve some of the problems I encountered while I was living in the apartment complex. This solution being an MVP, of course it can be improved or customized to solve your needs.
I hope this course will provide valuable insights and solutions to those facing similar challenges in apartment management..