A modern interview preparation platform with Google OAuth authentication, MongoDB storage, and interactive assessment modules.
- Node.js (v16+)
- MongoDB (local or Atlas)
- Google OAuth Credentials
-
Clone/Setup the project
cd GoalNow -
Configure Google OAuth
- Follow SETUP_GUIDE.md for Google Cloud setup
- Get your Google Client ID
-
Setup Server
cd server npm install # Create .env file with your credentials npm run dev
-
Setup Client
cd client npm install # Create .env.local with your Google Client ID npm run dev
-
Access the app
- Client: http://localhost:5173
- Server: http://localhost:5000
- β Google OAuth Sign-In - Direct login with Google
- β Email Sign-Up - Manual registration with name & email
- β Profile Management - Custom avatar and profile updates
- β JWT Authentication - Secure token-based auth
- β MongoDB Storage - All user data persisted
- π Behavioral Assessment - Interview behavior questions
- π» Technical Assessment - Coding and technical questions
- π Performance Tracking - Track progress over time
- π€ User Profiles - Custom profile with avatar
- π Secure Authentication - JWT tokens
- π± Responsive Design - Works on all devices
GoalNow/
βββ client/ # React frontend
β βββ src/
β β βββ Page/ # Page components
β β βββ components/ # Reusable components
β β βββ assesment/ # Assessment modules
β β βββ services/ # API services
β βββ .env.local # Client environment
β βββ package.json
βββ server/ # Express backend
β βββ models/ # MongoDB schemas
β βββ routes/ # API routes
β βββ server.js # Entry point
β βββ .env # Server environment
β βββ package.json
βββ SETUP_GUIDE.md # Detailed setup guide
MONGODB_URI=mongodb://localhost:27017/goalnow
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
JWT_SECRET=your_jwt_secret_key
PORT=5000
VITE_GOOGLE_CLIENT_ID=your_google_client_id
VITE_API_URL=http://localhost:5000/api
Google Sign-Up
POST /api/auth/google-signup
Body: { googleId, firstName, lastName, email, googleProfileImage }
Response: { token, user }
Email Sign-Up
POST /api/auth/email-signup
Body: { firstName, lastName, email, profileImage }
Response: { token, user }
Get Profile
GET /api/auth/profile/:userId
Response: { user }
Update Profile
PUT /api/auth/profile/:userId
Body: { firstName, lastName, profileImage }
Response: { user }
- React 19
- React Router DOM
- Axios
- React OAuth (Google)
- Tailwind CSS
- Three.js (3D elements)
- Node.js / Express
- MongoDB
- Mongoose
- JSON Web Tokens (JWT)
- CORS
- β JWT-based authentication
- β Password hashing (ready to implement)
- β CORS protection
- β Environment variable protection
- β MongoDB injection prevention
All user information is stored in MongoDB with the following schema:
{
firstName: String,
lastName: String,
email: String (unique),
googleId: String (unique, sparse),
profileImage: String,
googleProfileImage: String,
signupMethod: String ('google' | 'email'),
verified: Boolean,
createdAt: Date,
updatedAt: Date
}- Update your env variables
- Ensure MongoDB Atlas connection string
- Update CORS origins
- Deploy both client and server
- Deploy from GitHub
- Set env variables
- Update API URL
- Setup Guide - Detailed setup instructions
- API Documentation - Endpoint reference
- Architecture - System design
- Verify Client ID in
.env.local - Check origins in Google Cloud Console
- Clear browser cache
- Verify connection string in
.env - Check MongoDB is running
- For Atlas: verify credentials and IP whitelist
- Ensure client and server URLs match
- Check CORS configuration in server
For issues or questions, refer to SETUP_GUIDE.md or contact support.
ISC
Created for interview preparation practice.
Last Updated: March 2026