A comprehensive multimedia platform for community concerns and public empowerment in India. This platform allows citizens to raise their voice against issues in society and government by posting photos, videos, and voice recordings as evidence.
- User Authentication: JWT-based authentication with registration and login
- Issue Reporting: Create issues with multimedia evidence (photos, videos, audio)
- Location-based Organization: Issues organized by city, district, and state levels
- Voting System: Upvote/downvote issues and comments
- Comments & Discussion: Engage with issues through comments and replies
- Anonymous Posting: Option to post issues and comments anonymously
- Hashtags/Tags: Categorize issues with tags for better discoverability
- Search & Filter: Search issues and filter by location, category, scope, and more
- Trending Algorithm: Issues ranked by trending score based on engagement and recency
- Django REST Framework: Comprehensive backend API
- React + TypeScript: Modern frontend with type safety
- File Upload: Support for images, videos, and audio files
- Real-time Updates: Dynamic voting and engagement metrics
- Responsive Design: Mobile-friendly UI with Tailwind CSS
vox/
├── frontend/ # React + TypeScript frontend
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ ├── pages/ # Page components
│ │ ├── lib/ # API utilities and helpers
│ │ └── hooks/ # Custom React hooks
│ └── package.json
├── vox_backend/ # Django project settings
├── core/ # Django app with models, views, serializers
│ ├── models.py # Database models
│ ├── views.py # API viewsets
│ ├── serializers.py # DRF serializers
│ └── urls.py # URL routing
├── manage.py # Django management script
└── README.md
- Python 3.8+
- Node.js 16+ and npm/yarn
- PostgreSQL (optional, SQLite used by default)
- Install Python dependencies:
pip install django djangorestframework django-cors-headers djangorestframework-simplejwt pillow python-decouple- Run migrations:
python manage.py migrate- Populate initial data (states, districts, cities, categories):
python manage.py populate_initial_data- Create superuser (optional, for admin access):
python manage.py createsuperuser- Run development server:
python manage.py runserverThe backend API will be available at http://localhost:8000/api/
- Navigate to frontend directory:
cd frontend- Install dependencies:
npm install
# or
yarn install- Create environment file (optional):
Create a
.envfile in the frontend directory:
VITE_API_BASE_URL=http://localhost:8000/api
- Run development server:
npm run dev
# or
yarn devThe frontend will be available at http://localhost:8080
POST /api/auth/register/- Register new userPOST /api/auth/login/- Login userPOST /api/auth/refresh/- Refresh JWT token
GET /api/issues/- List all issues (with filters)GET /api/issues/{id}/- Get issue detailsPOST /api/issues/- Create new issuePOST /api/issues/{id}/vote/- Vote on issuePOST /api/issues/{id}/view/- Track issue viewGET /api/issues/{id}/comments/- Get issue comments
GET /api/comments/- List commentsPOST /api/comments/- Create commentPOST /api/comments/{id}/vote/- Vote on comment
GET /api/states/- List all statesGET /api/districts/?state={id}- List districts by stateGET /api/cities/?district={id}- List cities by district
GET /api/categories/- List all categoriesGET /api/tags/- List all tags
GET /api/search/?q={query}- Search issues and tags
- Register/Login: Create an account or login to start posting issues
- Create Issue: Click "Create Issue" to report a concern with evidence
- Browse Feed: View issues filtered by location, category, or scope
- Engage: Vote, comment, and share issues to bring attention to important matters
- Search: Use the search functionality to find specific issues or topics
- Models are in
core/models.py - API views are in
core/views.py - Serializers are in
core/serializers.py - Admin interface available at
/admin/
- Components use shadcn/ui for consistent styling
- API calls are centralized in
src/lib/api.ts - State management uses React hooks and React Query
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
This project is open source and available under the MIT License.
For issues, questions, or contributions, please open an issue on the repository.