{"id":29395249,"url":"https://github.com/adamstosho/polling-app","last_synced_at":"2026-04-09T23:02:15.890Z","repository":{"id":303870810,"uuid":"1016961583","full_name":"adamstosho/polling-app","owner":"adamstosho","description":"Traditional polling systems suffer from lack of transparency, delayed results, and poor user engagement. Users can't see real-time updates, results are often hidden until voting ends, and sharing polls is cumbersome. This creates distrust in the voting process and reduces participation.  PollFlow solves these problems...","archived":false,"fork":false,"pushed_at":"2025-07-09T21:20:36.000Z","size":364,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-10T06:49:32.916Z","etag":null,"topics":["framer-motion","lucide-react","nextjs","npm","socket-io","tailwindcss","typescript"],"latest_commit_sha":null,"homepage":"https://polling-app-srjt.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/adamstosho.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-09T19:56:36.000Z","updated_at":"2025-07-09T21:24:46.000Z","dependencies_parsed_at":"2025-07-10T06:49:46.849Z","dependency_job_id":"5dc95367-d92b-49c8-a4fe-60a71be1c033","html_url":"https://github.com/adamstosho/polling-app","commit_stats":null,"previous_names":["adamstosho/polling-app"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/adamstosho/polling-app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamstosho%2Fpolling-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamstosho%2Fpolling-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamstosho%2Fpolling-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamstosho%2Fpolling-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/adamstosho","download_url":"https://codeload.github.com/adamstosho/polling-app/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamstosho%2Fpolling-app/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264572290,"owners_count":23630221,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["framer-motion","lucide-react","nextjs","npm","socket-io","tailwindcss","typescript"],"created_at":"2025-07-10T11:27:26.223Z","updated_at":"2026-04-09T23:02:10.865Z","avatar_url":"https://github.com/adamstosho.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PollFlow - Real-Time Polling Application\n\n## The Problem\n\nTraditional polling systems suffer from lack of transparency, delayed results, and poor user engagement. Users can't see real-time updates, results are often hidden until voting ends, and sharing polls is cumbersome. This creates distrust in the voting process and reduces participation.\n\n## The Solution\n\nPollFlow solves these problems by providing **transparent, live voting** where everyone can see results updating in real-time. Users can create polls, share them instantly via QR codes or links, and watch votes come in live with beautiful visualizations. No more waiting for results - see democracy in action, transparently and instantly.\n\n## 🚀 Features\n\n- **Real-time Voting**: Watch votes come in live with instant updates across all devices\n- **Beautiful Analytics**: Visualize results with interactive charts and detailed breakdowns\n- **Easy Sharing**: Share polls instantly with QR codes, direct links, and social media integration\n- **Global Reach**: Multi-language support and timezone handling\n- **Secure \u0026 Private**: Enterprise-grade security with encrypted data and privacy-first approach\n- **Time Controls**: Set expiry dates, schedule polls, and control voting windows\n- **Mobile Responsive**: Works seamlessly on all devices\n- **User Authentication**: Secure signup/signin with JWT tokens\n- **Live Charts**: Real-time data visualization with Chart.js\n- **QR Code Generation**: Easy sharing with QR codes\n\n## 🛠️ Tech Stack\n\n### Frontend\n- **Next.js 15** - React framework with App Router\n- **TypeScript** - Type-safe development\n- **Tailwind CSS** - Utility-first CSS framework\n- **Framer Motion** - Smooth animations and transitions\n- **Radix UI** - Accessible component primitives\n- **Socket.io** - For real-time management\n- **React Hook Form** - Form handling and validation\n- **Zod** - Schema validation\n- **Chart.js** - Data visualization\n- **Lucide React** - Beautiful icons\n\n### Backend\n- **Node.js** - JavaScript runtime\n- **Express.js** - Web framework\n- **MongoDB** - NoSQL database\n- **Mongoose** - MongoDB object modeling\n- **JWT** - Authentication tokens\n- **Socket.io** - For real-time management\n- **bcryptjs** - Password hashing\n- **Swagger** - API documentation\n- **Rate Limiting** - Request throttling\n\n\n\nThe frontend will be available at `http://localhost:3000`\n\nThe backend will be available at `http://localhost:5000`\n\n## 🚀 Usage\n\n### Creating a Poll\n1. Sign up or sign in to your account\n2. Navigate to \"Create Poll\"\n3. Enter your question and options\n4. Set an optional expiry date\n5. Click \"Create Poll\"\n\n### Voting\n1. Open a poll link\n2. Select your preferred option\n3. Click \"Vote\"\n4. Watch real-time results update\n\n### Sharing\n- Copy the direct link\n- Scan the QR code\n- Share on social media\n\n## 📚 API Documentation\n\n### Authentication Endpoints\n- `POST /api/auth/signup` - Register a new user\n- `POST /api/auth/signin` - Login user\n- `POST /api/auth/refresh` - Refresh JWT token\n\n### Poll Endpoints\n- `POST /api/polls` - Create a new poll\n- `GET /api/polls` - Get all polls (paginated)\n- `GET /api/polls/:id` - Get single poll\n- `POST /api/polls/:id/vote` - Vote on a poll\n- `GET /api/polls/:id/results` - Get poll results\n\n### User Endpoints\n- `GET /api/users/me` - Get current user\n- `GET /api/users/me/polls` - Get user's polls\n\nFor detailed API documentation, see [API_DOCUMENTATION.md](polling-backend/API_DOCUMENTATION.md)\n\nFor swagger documentation: - Kindly access this link - https://polling-app-gleq.onrender.com/api-docs/ \n\n## 🔧 Development\n\n### Project Structure\n```\npolling_app/\n├── frontend/                 # Next.js frontend\n│   ├── app/                 # App router pages\n│   ├── components/          # React components\n│   ├── contexts/           # React contexts\n│   ├── hooks/              # Custom hooks\n│   └── lib/                # Utilities and API\n└── polling-backend/         # Node.js backend\n    ├── controllers/         # Route controllers\n    ├── models/             # MongoDB models\n    ├── routes/             # API routes\n    ├── middleware/         # Custom middleware\n    └── config/             # Configuration files\n```\n\n### Available Scripts\n\n**Frontend:**\n- `npm run dev` - Start development server\n- `npm run build` - Build for production\n- `npm run start` - Start production server\n- `npm run lint` - Run ESLint\n\n**Backend:**\n- `npm run dev` - Start development server with nodemon\n- `npm start` - Start production server\n\n## Preview\n\n[!screenshots](/frontend/public/WhatsApp%20Image%202025-07-09%20at%2021.21.22_71973b5d.jpg)\n\n**Create Account Page**\n\n![screenshots](/frontend/public/WhatsApp%20Image%202025-07-09%20at%2021.47.51_1d967844.jpg)\n**Login Page**\n\n![screenshots](/frontend/public/WhatsApp%20Image%202025-07-09%20at%2021.49.11_e519d2b5.jpg)\n**Profile page that shows list of polls a user has created**\n\n![screenshots](/frontend/public/WhatsApp%20Image%202025-07-09%20at%2021.50.35_f8bfd62b.jpg)\n**Poll Result Page**\n\n![screenshots](/frontend/public/WhatsApp%20Image%202025-07-09%20at%2021.51.35_700b1778.jpg)\n**Poll Result Page**\n\n![screenshot](/frontend/public/WhatsApp%20Image%202025-07-09%20at%2021.52.30_f49fa183.jpg)\n**Page for Creating Poll**\n\n## 🔒 Security Features\n\n- JWT-based authentication\n- Password hashing with bcrypt\n- Rate limiting on sensitive endpoints\n- CORS protection\n- Input validation and sanitization\n- Secure HTTP headers\n\n## 📊 Real-time Features\n\n- Live vote updates via Socket.io\n- Real-time chart updates\n- Instant notification system\n- Cross-device synchronization\n\n## 🤝 Contributing\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## 🙏 Acknowledgments\n\n- [Next.js](https://nextjs.org/) for the amazing React framework\n- [Tailwind CSS](https://tailwindcss.com/) for the utility-first CSS\n- [Radix UI](https://www.radix-ui.com/) for accessible components\n- [Socket.io](https://socket.io/) for real-time capabilities\n- [Chart.js](https://www.chartjs.org/) for beautiful data visualization\n\n---\n\nMade with ❤️ by the ART_Redox ©️ 2025.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadamstosho%2Fpolling-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadamstosho%2Fpolling-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadamstosho%2Fpolling-app/lists"}