A powerful, cloud-native web application that enables users to schedule Reddit posts with advanced recurring patterns and multi-account support. Built with Django REST Framework and React TypeScript.
- π Flexible Scheduling: One-time or recurring posts with cron expressions
- π Multi-Account Support: Connect and manage multiple Reddit accounts
- β‘ Real-time Dashboard: Monitor scheduled posts and account status
- π Secure OAuth: Reddit OAuth2 integration with encrypted token storage
- π Post Analytics: Track submission history and success rates
- π― Smart Retry Logic: Intelligent error handling with exponential backoff
- π¦ Status Management: Real-time post status tracking (active, queued, completed, error)
- π Intuitive UI: Modal-based post creation and editing
- π Responsive Design: Mobile-friendly interface with modern design
- β° Timezone Aware: Proper timezone handling for global users
Backend (Django + Celery):
- Django REST API with JWT authentication
- PostgreSQL database for data persistence
- Celery workers for background post processing
- Celery Beat scheduler for recurring tasks
- Redis as message broker and cache
Frontend (React + TypeScript):
- Modern React with TypeScript and Vite
- Shadcn/UI components with Tailwind CSS
- React Router for navigation
- Axios for API communication
- Context-based state management
Infrastructure:
- Docker containerization with microservices architecture
- Nginx reverse proxy for production
- Horizontal scaling support for workers
- Health checks and service monitoring
- Docker and Docker Compose
- Reddit API credentials (Get them here)
- Clone the repository:
git clone https://github.com/kneelesh48/schedularr
cd schedularr- Set up environment variables:
cp backend/.env.example backend/.env
# Edit backend/.env with your Reddit API credentials-
Start development services:
# Backend (Django + Celery) cd backend uv run manage.py migrate uv run manage.py runserver # Run Celery worker in another terminal uv run celery -A backend worker --loglevel=info # Run Celery beat in another terminal uv run celery -A backend beat --loglevel=info --scheduler django_celery_beat.schedulers:DatabaseScheduler # Frontend cd frontend npm install npm run dev
-
Access the application:
- Frontend: http://localhost:5173
- Backend API: http://localhost:8000
- Admin Panel: http://localhost:8000/admin
- Swagger UI: http://localhost:8000/api/schema/swagger-ui/
-
Configure environment:
cp backend/.env.example backend/.env # Update with production values -
Deploy with Docker:
docker compose up -d # Apply database migrations docker compose exec web uv run manage.py migrate # Create superuser (optional) docker compose exec web uv run manage.py createsuperuser
-
Access production app:
- Application: http://localhost:8080
π For detailed production operations, scaling, and maintenance procedures, see DEPLOYMENT.md
Key configuration options in backend/.env:
Check backend/.env.example
- Connect Reddit Account: Link your Reddit account via OAuth
- Create Post: Use the dashboard to create a new scheduled post
- Set Schedule: Use cron expressions for flexible scheduling:
0 9 * * *- Daily at 9 AM0 9 * * 1- Weekly on Mondays at 9 AM0 9 1 * *- Monthly on 1st at 9 AM
- Connect multiple Reddit accounts per user
- Switch between accounts in the dashboard
- Each post is tied to a specific Reddit account
- Account health monitoring and status tracking
- Real-time dashboard with post status
- Submission history and error tracking
- Success rate analytics
- Detailed error messages and retry status
backend/
βββ backend/ # Django project settings
βββ reddit/ # Main app with models, tasks, views
βββ users/ # User management
βββ manage.py
frontend/
βββ src/
β βββ components/ # Reusable UI components
β βββ pages/ # Page components
β βββ services/ # API and utility services
β βββ hooks/ # Custom React hooks
β βββ context/ # React context providers
β βββ types/ # TypeScript type definitions
βββ public/
# Backend tests
cd backend
uv run manage.py test
# Frontend tests
cd frontend
npm run test
# Linting
npm run lint# Scale workers for high load
docker compose up -d --scale worker=5
# Scale web servers
docker compose up -d --scale web=3# View service logs
docker compose logs -f worker
docker compose logs -f web
# Health check status
docker compose ps- OAuth2 Flow: Secure Reddit authentication with CSRF protection
- Token Encryption: Reddit refresh tokens stored encrypted
- Input Validation: Comprehensive validation on all inputs
- Rate Limiting: Built-in Reddit API rate limiting compliance
- Environment Variables: Sensitive data in environment variables only
- Fork the repository
- Create a feature branch:
git checkout -b feature/new-feature - Commit changes:
git commit -am 'Add new feature' - Push to branch:
git push origin feature/new-feature - Submit a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Built with β€οΈ using Django, React, and modern DevOps practices.
