Job Posting & Advertisement Platform
Backend Developer • Mobile App Backend • Referral System • Device ID Tracking
5 Buck Charlie is a mobile application backend platform that connects advertisers with users through job postings, advertisements, and news content. As a Backend Developer on this company project, I architected and developed a comprehensive backend system supporting dual user roles (Advertisers and Normal Users), referral point tracking, device ID management, and content distribution. The platform incentivizes user engagement through a referral reward system where both users and advertisers earn points.
The backend handles job posting management, advertisement distribution, news content, referral code generation and tracking, device-based user identification, and a sophisticated points system that rewards both content creators (advertisers) and content consumers (users) for platform engagement.
Advertisers: Can post jobs, advertisements, and news content. Normal Users: Can view content, earn referral points, and interact with posts.
Complete job management system with posting, categorization, search, filtering, and application tracking. Advertisers can manage multiple job listings.
Advertisement creation, scheduling, targeting, and performance tracking. Support for various ad types including banners, sponsored content, and promotional posts.
News posting and distribution system allowing advertisers to publish articles and updates. Features categorization, tagging, and featured content management.
Unique device ID system for user identification and multi-device support. Tracks user activity across devices while maintaining unified account identity.
Unique referral codes for each advertiser. Users can enter codes to earn points, and advertisers track referral performance and earn rewards.
Comprehensive points system where users earn points for viewing ads and engaging with content. Advertisers earn points when their referral codes are used.
User engagement tracking, content performance analytics, referral code usage statistics, and points transaction history for both user types.
Problem: Implementing a reliable user identification system using device IDs while supporting multi-device access, preventing duplicate accounts, and maintaining user identity across device changes.
Solution: Created a device management system that associates multiple device IDs with a single user account. Implemented device registration endpoint that validates device IDs and links them to user accounts. Built device validation middleware that checks device ID on each request. Added device history tracking to prevent account duplication while allowing legitimate multi-device access. Implemented device change detection and account migration logic.
Problem: Tracking referral code usage accurately, preventing code reuse, ensuring fair points distribution to both users and advertisers, and handling concurrent referral code entries.
Solution: Implemented atomic database transactions for referral code processing to prevent race conditions. Created referral code validation system that checks code uniqueness, expiration, and usage limits. Built points distribution logic that awards points to users for entering codes and to advertisers when their codes are used. Added referral transaction tracking with timestamps and user associations. Implemented duplicate prevention by tracking device ID and user combinations for each referral code.
Problem: Implementing secure access control ensuring only advertisers can create posts (jobs, ads, news) while users can only view content, with proper permission validation at API level.
Solution: Created custom Django permission classes (`IsAdvertiser`, `IsNormalUser`) that validate user roles before allowing actions. Implemented ViewSet-level permissions that restrict POST/PUT/DELETE operations to advertisers only. Built serializer-level validation that checks user role before processing requests. Added middleware to validate user permissions on content creation endpoints. Ensured all content viewing endpoints are accessible to both user types while creation endpoints are advertiser-exclusive.
Problem: Maintaining accurate points balances, preventing points manipulation, handling concurrent point transactions, and ensuring fair distribution of referral rewards.
Solution: Implemented database-level constraints and atomic transactions for all points operations. Created points transaction model that logs every points change with timestamp, user, reason, and amount. Built points balance calculation that aggregates transactions rather than storing mutable balance. Added validation to prevent negative balances and ensure points are only awarded for legitimate actions. Implemented idempotent points operations to prevent duplicate point awards from retries or concurrent requests.
Problem: Efficiently serving jobs, advertisements, and news content to mobile app users with proper filtering, pagination, and performance optimization for large content volumes.
Solution: Implemented efficient database queries using `select_related()` and `prefetch_related()` to minimize database hits. Created pagination system for content endpoints to handle large datasets. Built filtering and search functionality at database level for optimal performance. Implemented caching strategy for frequently accessed content. Added content prioritization logic (featured content, recent posts) to improve user experience. Optimized API responses with selective field serialization to reduce payload size for mobile apps.
POST /api/users/register/ - User registration with role selectionPOST /api/users/login/ - User authenticationGET /api/users/profile/ - Get user profilePUT /api/users/profile/ - Update profilePOST /api/users/device/register/ - Register device IDGET /api/users/points/ - Get points balanceGET /api/users/points/history/ - Get points transaction historyGET /api/jobs/ - List all jobs (users can view)POST /api/jobs/ - Create job (advertisers only)GET /api/jobs/{id}/ - Get job detailsPUT /api/jobs/{id}/ - Update job (advertiser only)DELETE /api/jobs/{id}/ - Delete job (advertiser only)GET /api/jobs/search/ - Search jobsGET /api/jobs/my/ - Get advertiser's jobsGET /api/advertisements/ - List advertisementsPOST /api/advertisements/ - Create advertisement (advertisers only)GET /api/advertisements/{id}/ - Get advertisement detailsPOST /api/advertisements/{id}/view/ - Track ad view and award pointsGET /api/advertisements/my/ - Get advertiser's adsGET /api/news/ - List news articlesPOST /api/news/ - Create news post (advertisers only)GET /api/news/{id}/ - Get news articleGET /api/news/featured/ - Get featured newsGET /api/referral/code/ - Get advertiser's referral codePOST /api/referral/enter/ - Enter referral code (users)GET /api/referral/stats/ - Get referral statistics (advertisers)GET /api/referral/usage/ - Get referral code usage history
Project: 5 Buck Charlie - Job Posting & Advertisement Platform
Role: Backend Developer
Company: ENIGMATIX
Type: Company Project, Mobile App Backend
Tech Stack: Django, Django REST Framework, Python, PostgreSQL
Key Features: Dual User Roles, Job Posting, Advertisements, News, Device ID Tracking, Referral System, Points Management
Successfully architected and implemented a comprehensive mobile app backend supporting dual user roles, referral-based engagement system, and device ID tracking. The platform enables advertisers to reach users through job postings and advertisements while incentivizing user engagement through a sophisticated points and referral reward system.