Skip to content

Commit ab97b84

Browse files
committed
feat: Add comprehensive Idea Submission & Voting System
Resolves: DevDisplay Idea Submission Feature Request Author: AadityaHande <[email protected]>
1 parent 01a572a commit ab97b84

File tree

11 files changed

+2094
-27
lines changed

11 files changed

+2094
-27
lines changed

IDEA_SUBMISSION_FEATURE.md

Lines changed: 183 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,183 @@
1+
# 💡 Idea Submission Feature - DevDisplay
2+
3+
## Overview
4+
This feature implements a comprehensive idea submission and voting system for DevDisplay, allowing users to submit innovative project ideas, vote on their favorites, and collaborate on top-voted ideas.
5+
6+
## 🚀 Features Implemented
7+
8+
### 1. **Idea Submission System**
9+
- **Monthly Submission Window**: Users can submit ideas only during the first week of each month
10+
- **One Idea Per User**: Each user can submit only one idea per month
11+
- **Rich Form Data**: Includes title, description, tags, resources needed, and media URLs
12+
- **Real-time Validation**: Prevents duplicate submissions and enforces submission periods
13+
14+
### 2. **Voting System**
15+
- **Democratic Voting**: Users can vote for their favorite ideas
16+
- **One Vote Per Idea**: Each user can only vote once per idea
17+
- **Real-time Updates**: Vote counts update immediately
18+
- **Leaderboard**: Top ideas are ranked by vote count
19+
20+
### 3. **Trending Ideas Dashboard**
21+
- **Top 5 Trending**: Displays the most popular ideas dynamically
22+
- **Leaderboard View**: Shows ranking with medal system (🥇🥈🥉)
23+
- **Real-time Updates**: Trending list updates as votes come in
24+
25+
### 4. **Collaboration Hub**
26+
- **Selected Ideas**: Shows ideas chosen for development
27+
- **Role-based Collaboration**: Users can join projects in specific roles
28+
- **Team Management**: View current team members and their roles
29+
- **Project Status Tracking**: Track development progress
30+
31+
### 5. **User Experience Features**
32+
- **Responsive Design**: Works on all device sizes
33+
- **Animated Interactions**: Smooth animations with Framer Motion
34+
- **Real-time Status**: Live countdown timers and submission status
35+
- **Comprehensive Navigation**: Easy tab-based navigation
36+
37+
## 🛠️ Technical Implementation
38+
39+
### Backend (Node.js + Express + MongoDB)
40+
41+
**Models:**
42+
- `Ideas Model` (ideas.models.js): Complete data structure for ideas with voting and collaboration features
43+
44+
**Controllers:**
45+
- `Ideas Controller` (ideas.controllers.js): Handles all idea-related operations including submission, voting, and collaboration
46+
47+
**Routes:**
48+
- `Ideas Routes` (ideas.routes.js): RESTful API endpoints for all functionality
49+
50+
**Key API Endpoints:**
51+
```
52+
GET /devdisplay/v1/ideas/status - Get submission status
53+
GET /devdisplay/v1/ideas/trending - Get trending ideas
54+
GET /devdisplay/v1/ideas/current - Get current month ideas
55+
GET /devdisplay/v1/ideas/:ideaId - Get specific idea
56+
POST /devdisplay/v1/ideas/submit - Submit new idea
57+
POST /devdisplay/v1/ideas/:ideaId/vote - Vote for idea
58+
DELETE /devdisplay/v1/ideas/:ideaId/vote - Remove vote
59+
PUT /devdisplay/v1/ideas/:ideaId/select - Select idea for development
60+
POST /devdisplay/v1/ideas/:ideaId/collaborate - Join collaboration
61+
```
62+
63+
### Frontend (React + Tailwind CSS + Framer Motion)
64+
65+
**Main Components:**
66+
- `IdeaSubmission.jsx`: Main page with tab navigation
67+
- `IdeaSubmissionForm.jsx`: Form for submitting new ideas
68+
- `IdeaCard.jsx`: Individual idea display with voting
69+
- `TrendingIdeas.jsx`: Trending ideas dashboard with leaderboard
70+
- `SubmissionStatus.jsx`: Real-time submission status with countdown
71+
- `CollaborationHub.jsx`: Collaboration and team management
72+
73+
**Key Features:**
74+
- Real-time countdown timers
75+
- Interactive voting system
76+
- Responsive grid layouts
77+
- Smooth animations and transitions
78+
- Form validation and error handling
79+
80+
## 📋 Workflow
81+
82+
### Monthly Cycle:
83+
1. **Week 1**: Idea submission window opens
84+
2. **Weeks 2-4**: Community voting phase
85+
3. **End of Month**: Top idea selected for development
86+
4. **Next Month**: Community collaboration on selected idea
87+
88+
### User Journey:
89+
1. **Submit**: Users submit innovative ideas during submission week
90+
2. **Vote**: Community votes on their favorite ideas throughout the month
91+
3. **Collaborate**: Users join development of selected ideas
92+
4. **Recognize**: Contributors receive badges and recognition
93+
94+
## 🎯 Benefits
95+
96+
### For Contributors:
97+
- **Skill Building**: Hands-on experience in collaborative development
98+
- **Recognition**: Badges, leaderboard rankings, and portfolio credits
99+
- **Networking**: Connect with other developers and build relationships
100+
- **Innovation**: Platform to share and develop creative ideas
101+
102+
### For Community:
103+
- **Quality Ideas**: Democratic voting ensures best ideas rise to top
104+
- **Active Participation**: Encourages ongoing community engagement
105+
- **Real Projects**: Ideas become actual implemented projects
106+
- **Learning**: Collaborative development teaches new skills
107+
108+
## 🔧 Setup Instructions
109+
110+
### Backend Setup:
111+
1. Ensure MongoDB is connected (already configured in DevDisplay)
112+
2. The Ideas model will be automatically registered when first used
113+
3. API routes are already integrated into the main app.js
114+
115+
### Frontend Setup:
116+
1. All components are already integrated into the main IdeaSubmission page
117+
2. Navigation is handled through the existing App.js routing
118+
3. No additional dependencies needed (uses existing React, Tailwind, Framer Motion)
119+
120+
## 🎨 Design Features
121+
122+
### Visual Elements:
123+
- **Gradient Backgrounds**: Beautiful blue-purple gradients
124+
- **Interactive Cards**: Hover effects and animations
125+
- **Status Indicators**: Color-coded status badges and indicators
126+
- **Responsive Layout**: Mobile-first design approach
127+
- **Emoji Integration**: Fun and engaging emoji usage throughout
128+
129+
### User Feedback:
130+
- **Real-time Updates**: Immediate feedback on actions
131+
- **Loading States**: Smooth loading animations
132+
- **Error Handling**: Clear error messages and guidance
133+
- **Success Messages**: Celebratory success confirmations
134+
135+
## 🚀 Future Enhancements
136+
137+
### Potential Additions:
138+
- **Idea Categories**: Filter ideas by category/technology
139+
- **Search Functionality**: Search through submitted ideas
140+
- **Idea Comments**: Allow discussion on specific ideas
141+
- **Progress Tracking**: Kanban boards for development progress
142+
- **Notification System**: Email/push notifications for important events
143+
- **Idea History**: Archive of past implemented ideas
144+
- **Advanced Analytics**: Detailed statistics and insights
145+
146+
### Admin Features:
147+
- **Moderation Tools**: Ability to moderate submitted ideas
148+
- **Selection Override**: Manual selection of ideas for development
149+
- **User Management**: Manage user permissions and roles
150+
- **Analytics Dashboard**: Comprehensive analytics and reporting
151+
152+
## 📊 Metrics & Success Indicators
153+
154+
### Engagement Metrics:
155+
- Number of ideas submitted per month
156+
- Community voting participation rates
157+
- Collaboration join rates
158+
- Project completion rates
159+
160+
### Quality Metrics:
161+
- Idea implementation success rate
162+
- Community satisfaction scores
163+
- Feature usage analytics
164+
- User retention in collaborative projects
165+
166+
## 🤝 Contributing
167+
168+
To enhance this feature:
169+
1. Follow the existing code structure and patterns
170+
2. Maintain the responsive design principles
171+
3. Add comprehensive error handling
172+
4. Include appropriate animations and user feedback
173+
5. Test all functionality thoroughly
174+
175+
## 📝 Notes
176+
177+
- **Database**: Uses MongoDB with Mongoose ODM
178+
- **Authentication**: Currently uses email-based identification (can be enhanced with proper auth)
179+
- **Validation**: Both frontend and backend validation implemented
180+
- **Security**: Basic input sanitization and validation
181+
- **Performance**: Optimized queries and pagination support
182+
183+
This implementation provides a solid foundation for the idea submission feature that can be extended and customized based on community needs and feedback.

backend/app.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import express from 'express';
22
import { devRouter } from './routes/dev.routes.js';
33
import { githubRouter } from './routes/github.routes.js';
44
import { subscribersRouter } from './routes/subscribers.routes.js';
5+
import { ideasRouter } from './routes/ideas.routes.js';
56
import { getSubscribers } from './controllers/subscribers.controllers.js';
67
import Subscribers from './models/subscribers.models.js';
78
const app = express();
@@ -15,6 +16,9 @@ app.use('/devdisplay/v1/trending/dev', devRouter);
1516
// Use the githubRouter for the "/api/v1/trending/github" route
1617
app.use('/devdisplay/v1/trending/github', githubRouter);
1718

19+
// Use the ideasRouter for the "/devdisplay/v1/ideas" route
20+
app.use('/devdisplay/v1/ideas', ideasRouter);
21+
1822
app.use('/devdisplay/v1/subscribers', getSubscribers);
1923

2024
app.get('/', (req, res) => {

0 commit comments

Comments
 (0)