This repository is part of my journey to master Django for backend development. Each subproject helps me learn and apply new Django concepts, from user authentication and CRUD to admin management, filtering, and user permissions.
A basic news publishing app built to practice core Django functionalities including authentication, permissions, CRUD operations, and model relationships.
- User Authentication: Signup, Login, Logout, Change password
- Article Management:
- CRUD operations on articles
- Only authenticated users can create
- Only article authors can edit or delete
- Comments System:
- Logged-in users can add comments
- Comments are filtered for bad words
📝 Blog App
A more advanced blog platform exploring custom admin features, user promotions, automatic post deletion based on dislikes, category filtering, pagination, and user subscriptions.
- User System:
- Signup with email validation, Login, Logout
- Custom user creation form with email requirement
- Admin Panel for Superusers:
- Comprehensive management dashboard
- Manage posts, categories, and forbidden words
- Promote users to superusers
- User management with promotion capabilities
- Posts:
- CRUD operations with tagging system
- Auto-delete after 10 dislikes
- Like/dislike system with toggle functionality
- Similar posts recommendation based on tags
- Tag-based post filtering and browsing
- Categories System:
- Category-based post organization
- Subscribe/unsubscribe to categories with email notifications
- Category details pages with filtered posts
- Email Notifications:
- Subscription confirmation emails (HTML & plain text)
- SMTP email backend integration
- Graceful email error handling
- Homepage Features:
- Pagination (5 posts per page)
- Latest posts display
- Category sidebar with subscription status
- Comments System:
- Only for logged-in users
- Real-time forbidden word filtering with censorship
- Comments linked to specific posts
- Tagging System:
- Django-taggit integration for post tagging
- Tag-based post discovery and filtering
- Database:
- MySQL integration with custom configuration
- Egypt timezone support
Simple social bookmarking & profile demo exploring user profiles (with optional photo upload placeholder) and custom profile extension via one-to-one model.
- Profile model extending auth user with birthdate & photo upload field
- Demonstrates file uploads (stored under
media/photos/) - Foundation for future bookmark CRUD (scaffolding present)
Personal address book application focusing on model validation, uniqueness constraints, and per-user data isolation.
- Contact model linked to owner (ForeignKey to User)
- Server-side validation (custom
clean()):- Enforces unique (email, user) pair (DB + logic level)
- Prevents duplicate phone per user
- Database-level unique constraint (
UniqueConstraint) for email/user - Regex phone validation (supports optional leading +, 7–15 digits)
- Automatic timestamps & list views (CRUD scaffold)
Mini freelance marketplace prototype with custom user model, projects, skills, categories, and proposal workflow.
- Custom user model (
ProfileextendingAbstractUser) with avatar, resume, bio, location, last_seen - Projects:
- Category & Skill tagging (M2M to
Skill+ category-specific skills) - Budget, deadline, open/closed status
- Auto slug generation for categories/skills
- Category & Skill tagging (M2M to
- Proposals:
- Status workflow (pending / accepted / rejected / withdraw)
- Bid amount & delivery datetime
- Clean URL structure via
get_absolute_urlmethods - Media handling for avatars & resumes
Personal productivity app emphasizing custom email-auth user model and hierarchical plan → tasks relationship.
- Custom user model (
CustomUser) authenticating via email (USERNAME_FIELD override) - Plans with related Tasks (cascade delete)
- Tasks include deadline, completion status, reverse related name for aggregation
- Simple extensible base for reminders or progress analytics
- Backend: Django
- Database: SQLite (default), MySQL
- Frontend: Django Templates (HTML + Bootstrap)
- Add deployment configuration for Heroku or Render
- Add more projects exploring Django REST Framework and APIs
- Implement test coverage for each app
- Expand Bookmarks with actual bookmark CRUD & tagging
- Add messaging / notifications to Freelancer Hub
- Introduce REST API endpoints (DRF) for Planner & Contacts
This is a personal learning repository, but contributions and suggestions are welcome.