- User Registration & Authentication - JWT-based secure auth system
- Idea Posting - Create posts with title, content, and categories
- Voting System - Reddit-style upvote/downvote functionality
- Milestone Tracking - Automatic business assistance at vote thresholds
- Categories - Tech, Business, Social, Entertainment, Other
- Input validation and sanitization
- Rate limiting (100 requests/15min, 5 auth attempts/15min)
- CORS protection
- Helmet security headers
- MongoDB injection protection
- Password hashing with bcrypt
- 10 upvotes: Business consultation scheduled
- 100 upvotes: Legal incorporation paperwork initiated
- 1000 upvotes: Trademark registration and full business setup
POST /auth/register- Create new user accountPOST /auth/login- Login with username/password
GET /posts- Get all posts (paginated, sortable)POST /posts- Create new post (auth required)GET /posts/:id- Get single post with detailsPOST /posts/:id/vote- Vote on post (auth required)
GET /users/me- Get own profile (auth required)GET /users/:username- Get public user profileDELETE /users/me- Delete own account (auth required)
GET /milestones- View reached milestonesPOST /milestones/:id/trigger- Trigger milestone action (admin)
# Install MongoDB
brew tap mongodb/brew
brew install mongodb-community@6.0
brew services start mongodb-community@6.0git clone https://github.com/nulljosh/findeas-web
cd findeas-web
npm install# Copy environment template
cp .env.example .env
# Edit .env with your settings
# - Change JWT_SECRET for production
# - Update DATABASE connection string
# - Set FRONTEND_URL for CORS# Development (with nodemon)
npm start
# Production
node app.jsThe server runs on http://localhost:3030 by default.
- Username (unique, 3-30 chars, alphanumeric + underscore/hyphen)
- Password (8+ chars, must contain uppercase, lowercase, number)
- Email (optional, unique)
- Posts array (references to user's posts)
- Vote history tracking
- Title (5-200 chars)
- Content (10-5000 chars)
- Category (tech/business/social/entertainment/other)
- Author (User reference)
- Vote counts (upvotes, downvotes, score)
- Milestone tracking
- View counter
- Timestamps
- Clone the repository
git clone https://github.com/nulljosh/findeas-web
cd findeas-web- Install MongoDB
brew tap mongodb/brew
brew install mongodb-community@6.0
brew services start mongodb-community@6.0- Install dependencies
npm install- Configure environment
cp .env.example .env
# Edit .env with your settings (JWT_SECRET, DATABASE, FRONTEND_URL)- Start the server
npm start # Development mode with nodemon
# or
node app.js # Production modeServer runs on http://localhost:3030 by default.
- User: username, email
- Post: author, category, score, upvotes, createdAt
- All user input is validated and sanitized
- Passwords are bcrypt hashed (salt rounds: 10)
- JWT tokens expire in 24 hours
- Rate limiting prevents abuse
- Admin endpoints require special privileges