Demo Video: Watch Demo
A modern, full-stack Q&A platform built with React, Node.js, and MongoDB. StackIt provides a professional environment for asking questions, sharing knowledge, and building reputation through collaborative learning.
Click the image above to watch a comprehensive demo of StackIt features
- User Authentication: Secure signup/login with JWT tokens
- Questions & Answers: Rich text editor with markdown support
- Voting System: Upvote/downvote questions and answers
- Accepted Answers: Question owners can accept the best answer
- Tag System: Categorize questions with multiple tags
- Search & Filter: Advanced search with multiple filter options
- Real-time Notifications: WebSocket-based notifications for new answers, comments, and mentions
- Modern UI: Clean, professional design with dark/light mode
- Responsive Design: Works perfectly on desktop, tablet, and mobile
- Rich Text Editor: Full-featured editor with formatting options
- Real-time Updates: Live notifications and updates
- User Profiles: Detailed user profiles with reputation system
- Reputation System: Users gain reputation through helpful contributions
- Admin Dashboard: Comprehensive moderation tools
- Content Moderation: Flag inappropriate content
- Edit History: Track changes to questions and answers
- Bounty System: Offer reputation points for answers (planned)
- React 18 - Modern React with hooks
- Vite - Fast build tool and dev server
- Tailwind CSS - Utility-first CSS framework
- React Router - Client-side routing
- React Query - Server state management
- React Hook Form - Form handling and validation
- React Quill - Rich text editor
- Framer Motion - Smooth animations
- Socket.io Client - Real-time communication
- Node.js - JavaScript runtime
- Express.js - Web framework
- MongoDB - NoSQL database
- Mongoose - MongoDB object modeling
- JWT - Authentication tokens
- bcryptjs - Password hashing
- Socket.io - Real-time bidirectional communication
- Express Validator - Input validation
- Helmet - Security middleware
- Fork this repository
- Follow the Deployment Guide
- Access your live application in minutes!
- Node.js (v16 or higher)
- MongoDB (local or cloud instance)
- npm or yarn
-
Clone the repository
git clone https://github.com/Ashmita1206/Odoo_Hackathon_2025.git cd stackit-qa-platform -
Install dependencies
# Install all dependencies (root, server, client) npm run install-all -
Environment Configuration
Copy the example environment files:
# Server environment cp server/env.example server/.env # Client environment (optional for local dev) cp client/env.example client/.env
Update
server/.env:PORT=5000 MONGODB_URI=mongodb://localhost:27017/stackit JWT_SECRET=your-super-secret-jwt-key CLIENT_URL=http://localhost:3000 NODE_ENV=development
-
Start the development servers
# Start both frontend and backend npm run dev # Or start them separately: npm run server # Backend on port 5000 npm run client # Frontend on port 3000
-
Access the application
- Frontend: http://localhost:3000
- Backend API: http://localhost:5000
- API Health Check: http://localhost:5000/api/health
-
Run tests
npm test
stackit-qa-platform/
βββ client/ # React frontend
β βββ src/
β β βββ components/ # Reusable components
β β βββ contexts/ # React contexts
β β βββ pages/ # Page components
β β βββ utils/ # Utility functions
β β βββ index.css # Global styles
β βββ package.json
β βββ vite.config.js
βββ server/ # Node.js backend
β βββ config/ # Configuration files
β βββ middleware/ # Express middleware
β βββ models/ # Mongoose models
β βββ routes/ # API routes
β βββ package.json
β βββ index.js
βββ package.json # Root package.json
βββ README.md
POST /api/auth/signup- Register new userPOST /api/auth/login- User loginGET /api/auth/me- Get current userPUT /api/auth/profile- Update user profilePOST /api/auth/change-password- Change password
GET /api/questions- Get all questions (with filters)GET /api/questions/:id- Get single questionPOST /api/questions- Create new questionPUT /api/questions/:id- Update questionDELETE /api/questions/:id- Delete questionPOST /api/questions/:id/vote- Vote on questionPOST /api/questions/:id/accept-answer- Accept answer
GET /api/answers/question/:questionId- Get answers for questionPOST /api/answers- Create new answerPUT /api/answers/:id- Update answerDELETE /api/answers/:id- Delete answerPOST /api/answers/:id/vote- Vote on answer
GET /api/users/:username- Get user profileGET /api/users/:username/questions- Get user's questionsGET /api/users/:username/answers- Get user's answers
GET /api/tags- Get all tagsGET /api/tags/popular- Get popular tags
GET /api/admin/dashboard- Admin dashboard statsPOST /api/admin/users/:id/ban- Ban userPOST /api/admin/questions/:id/moderate- Moderate question
- Primary: Blue (#3B82F6) - Main brand color
- Navy: Dark blue (#1E293B) - Text and backgrounds
- Accent: Light blue (#0EA5E9) - Highlights and accents
- Success: Green (#10B981) - Positive actions
- Warning: Yellow (#F59E0B) - Warnings
- Error: Red (#EF4444) - Errors and destructive actions
- Primary Font: Inter - Clean, modern sans-serif
- Code Font: JetBrains Mono - For code blocks
- Buttons: Primary, secondary, and outline variants
- Cards: Consistent card design with hover effects
- Forms: Styled form inputs with validation
- Badges: Tag and status indicators
- Modals: Overlay dialogs for confirmations
- JWT Authentication - Secure token-based authentication
- Password Hashing - bcrypt for password security
- Input Validation - Comprehensive validation on all inputs
- Rate Limiting - Prevent abuse with request limiting
- CORS Protection - Configured for production security
- Helmet.js - Security headers and protection
- MongoDB Injection Protection - Mongoose ODM protection
- Build the project:
npm run build - Deploy the
client/distfolder - Set environment variables for API URL
- Set up MongoDB database
- Configure environment variables
- Deploy the server directory
- Set up build scripts
PORT=5000
MONGODB_URI=your-production-mongodb-uri
JWT_SECRET=your-production-jwt-secret
CLIENT_URL=https://your-frontend-domain.com
NODE_ENV=productionπ₯ Team Built with β€οΈ during the hackathon by: Ashmita Goyal Gargi Bajpai Lipika Tomar
- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Make your changes
- Add tests if applicable
- Commit your changes:
git commit -m 'Add feature' - Push to the branch:
git push origin feature-name - Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
- Inspired by Stack Overflow and other Q&A platforms
- Built with modern web technologies
- Designed for optimal user experience
- Focused on community and knowledge sharing
For support and questions:
- Create an issue in the repository
- Contact the development team
- Check the documentation
StackIt - Where knowledge meets community! π





