- About
- Features
- Tech Stack
- Project Structure
- Getting Started
- Environment Variables
- API Documentation
- Contributing
- License
Pollaro is a modern, full-stack form and poll creation platform that makes it easy to build beautiful, interactive forms and collect responses efficiently. Built with cutting-edge technologies, Pollaro offers a seamless experience for both form creators and respondents.
- π¨ Modern UI/UX - Beautiful, responsive design with Tailwind CSS
- β‘ Real-time Updates - Instant form updates and response tracking
- π Secure Authentication - NextAuth.js with Google OAuth integration
- π± Mobile-First - Fully responsive across all devices
- π High Performance - Built with Next.js 15 and optimized for speed
- π Analytics - Built-in response analytics and insights
- π§ Developer Friendly - TypeScript throughout, comprehensive error handling
- Multiple Question Types
- Short Answer
- Long Answer (Textarea)
- Multiple Choice
- Checkbox
- Dropdown
- File Upload
- Form Management
- Drag & drop question ordering
- Required/optional questions
- Form preview
- Publish/unpublish forms
- Customization
- Form titles and descriptions
- Question validation
- File upload restrictions
- Anonymous Responses - No signup required for respondents
- File Upload Support - Secure file uploads to AWS S3
- Response Validation - Client and server-side validation
- Duplicate Prevention - Prevents multiple responses from same user
- Response Dashboard - View all responses in organized tables
- Real-time Statistics - Live response counts and analytics
- Export Capabilities - Download response data
- Form Analytics - Track form performance and engagement
- Monorepo Architecture - Turborepo for efficient development
- Type Safety - Full TypeScript implementation
- Database Management - Prisma ORM with PostgreSQL
- File Storage - AWS S3 integration for file uploads
- Authentication - NextAuth.js with multiple providers
- API Proxy - Secure backend communication
- Framework: Next.js 15 with App Router
- UI Library: Radix UI + Custom Components
- Styling: Tailwind CSS 4.x
- State Management: TanStack Query (React Query)
- Forms: React Hook Form + Zod validation
- Authentication: NextAuth.js v5
- Icons: Lucide React
- Charts: Recharts
- Runtime: Node.js with Express
- Language: TypeScript
- Database: PostgreSQL
- ORM: Prisma
- File Storage: AWS S3
- Authentication: JWT + Google OAuth
- Validation: Zod schemas
- Monorepo: Turborepo
- Package Manager: pnpm
- Linting: ESLint
- Formatting: Prettier
- Type Checking: TypeScript
Pollaro/
βββ apps/
β βββ frontend/ # Next.js frontend application
β β βββ app/ # App Router pages and components
β β β βββ (protected)/ # Protected routes
β β β βββ auth/ # Authentication pages
β β β βββ pages/ # Page components
β β β βββ api/ # API routes
β β βββ components/ # Reusable UI components
β β βββ services/ # API services and queries
β βββ backend/ # Express.js backend API
β βββ src/
β β βββ controller/ # Route controllers
β β βββ services/ # Business logic
β β βββ routes/ # API routes
β β βββ middlewares/ # Custom middlewares
β βββ prisma/ # Database schema
βββ packages/
β βββ prisma/ # Shared Prisma client
β βββ ui/ # Shared UI components
β βββ eslint-config/ # Shared ESLint config
β βββ typescript-config/ # Shared TypeScript config
βββ README.md
- Node.js 18+
- pnpm (recommended) or npm
- PostgreSQL database
- AWS S3 bucket (for file uploads)
-
Clone the repository
git clone https://github.com/yourusername/pollaro.git cd pollaro -
Install dependencies
pnpm install
-
Set up environment variables
cp .env.example .env # Edit .env with your configuration -
Set up the database
# Generate Prisma client pnpm db:generate # Run database migrations pnpm db:migrate
-
Start the development servers
# Start both frontend and backend pnpm dev # Or start individually pnpm dev --filter=frontend pnpm dev --filter=backend
-
Access the application
- Frontend: http://localhost:3000
- Backend API: http://localhost:8000
# Development
pnpm dev # Start all apps in development mode
pnpm dev --filter=frontend # Start only frontend
pnpm dev --filter=backend # Start only backend
# Building
pnpm build # Build all apps
pnpm build --filter=frontend # Build only frontend
pnpm build --filter=backend # Build only backend
# Production
pnpm start # Start production servers
# Database
pnpm db:generate # Generate Prisma client
pnpm db:migrate # Run database migrations
pnpm db:studio # Open Prisma Studio
# Code Quality
pnpm lint # Run ESLint
pnpm format # Format code with Prettier
pnpm check-types # Run TypeScript type checkingNEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=your-secret-key
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret
NEXT_PUBLIC_API_URL=http://localhost:8000DATABASE_URL="postgresql://username:password@localhost:5432/pollaro"
JWT_SECRET=your-jwt-secret
AWS_ACCESS_KEY_ID=your-aws-access-key
AWS_SECRET_ACCESS_KEY=your-aws-secret-key
AWS_REGION=your-aws-region
AWS_S3_BUCKET=your-s3-bucket-name
CORS_ORIGIN=http://localhost:3000POST /api/auth/signin- User sign inPOST /api/auth/signout- User sign outGET /api/auth/session- Get current session
GET /api/forms- Get user's formsPOST /api/forms- Create new formGET /api/forms/:id- Get form detailsPUT /api/forms/:id- Update formDELETE /api/forms/:id- Delete form
POST /api/questions- Create questionPUT /api/questions/:id- Update questionDELETE /api/questions/:id- Delete question
POST /api/responses- Submit responseGET /api/responses/:formId- Get form responsesDELETE /api/responses/:id- Delete response
POST /api/file/upload- Get presigned URL for file upload
We welcome contributions to Pollaro! Here's how you can help:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes
- Run tests and linting:
pnpm lint && pnpm check-types - Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
- Follow the existing code style and conventions
- Write meaningful commit messages
- Add tests for new features
- Update documentation as needed
- Ensure all checks pass before submitting PR
- π Bug fixes
- β¨ New features
- π Documentation improvements
- π¨ UI/UX enhancements
- β‘ Performance optimizations
- π§ͺ Test coverage improvements
- Use the GitHub issue tracker
- Provide detailed reproduction steps
- Include system information
- Add screenshots if applicable
This project is licensed under the MIT License - see the LICENSE file for details.
- Next.js for the amazing React framework
- Prisma for the excellent database toolkit
- Radix UI for accessible component primitives
- Tailwind CSS for the utility-first CSS framework
- Turborepo for the monorepo build system
Made with β€οΈ by the Pollaro Team
β Star this repo β’ π Report Bug β’ β¨ Request Feature
