A full-stack web application that combines personality assessment tools including MBTI testing, horoscope analysis, and palm reading. Users can create accounts, take personality tests, and receive personalized insights based on multiple personality assessment methodologies. This project was a collaboration of three members including myself.
β¨ User Authentication
- Secure signup and login with JWT-based authentication
- Password encryption using bcrypt
- User profile management
π― Personality Assessments
- MBTI Test: Comprehensive Myers-Briggs Type Indicator assessment
- Horoscope Reading: Astrological insights based on birth date
- Palm Reading: AI-powered palm reading analysis using Google's Palm API
π Results & Analytics
- View past assessment results
- Compare multiple personality assessments
- Download or export personality profiles
π¨ User Experience
- Responsive design with modern UI
- Intuitive navigation through test flows
- Real-time form validation
- Personalized dashboard
- React 19.1.1 - UI library
- React Router 7.9.5 - Client-side routing
- Vite 7.1.7 - Build tool and dev server
- CSS3 - Styling
- Node.js with Express 4.18.2 - REST API server
- MongoDB with Mongoose 8.19.3 - NoSQL database
- JWT - Authentication and authorization
- Bcrypt - Password hashing
- CORS - Cross-origin resource sharing
- Google Palm API - AI-powered insights
- ESLint - Code linting
- Nodemon - Auto-restart during backend development
- Concurrently - Run frontend and backend simultaneously
- Sharp - Image processing
PersonaPath/
βββ src/ # React frontend
β βββ components/
β β βββ Home.jsx # Landing page
β β βββ Login.jsx # Login form
β β βββ Signup.jsx # Registration form
β β βββ Mbtitest.jsx # MBTI test component
β β βββ HoroscopeForm.jsx # Horoscope input form
β β βββ PalmReading.jsx # Palm reading component
β β βββ MbtiResults.jsx # MBTI results page
β β βββ FinalResults.jsx # Combined results view
β β βββ Oldresults.jsx # Historical results
β β βββ navbar.jsx # Navigation component
β β βββ ...
β βββ services/
β β βββ mbtiService.js # MBTI API calls
β βββ App.jsx # Main app component
β βββ main.jsx # React entry point
β
βββ backend/ # Node.js backend
β βββ models/
β β βββ User.js # User schema
β β βββ UserResult.js # Test results schema
β βββ routes/
β β βββ auth.js # Authentication endpoints
β β βββ palm.js # Palm reading endpoints
β β βββ reading.js # Reading endpoints
β β βββ results.js # Results endpoints
β βββ middleware/
β β βββ auth.js # JWT verification middleware
β βββ services/
β β βββ palmService.js # Google Palm API integration
β βββ config/
β β βββ jwt.js # JWT configuration
β βββ server.js # Express server entry point
β
βββ public/ # Static assets
βββ package.json # Frontend dependencies
βββ vite.config.js # Vite configuration
- Node.js (v16 or higher)
- npm or yarn
- MongoDB instance (local or cloud)
- Google Palm API key
-
Clone the repository
git clone https://github.com/virenfern/PersonaPath.git cd PersonaPath -
Install frontend dependencies
npm install
-
Install backend dependencies
cd backend npm install cd ..
-
Configure environment variables
Create a
.envfile in thebackenddirectory:MONGODB_URI=your_mongodb_connection_string JWT_SECRET=your_jwt_secret_key PALM_API_KEY=your_google_palm_api_key NODE_ENV=development PORT=5000
Run both frontend and backend concurrently:
npm run devThis will start:
- Frontend: http://localhost:5173 (Vite dev server)
- Backend: http://localhost:5000 (Express server)
Build the frontend:
npm run buildStart the backend in production:
cd backend
npm startPOST /api/auth/signup- Register new userPOST /api/auth/login- Login userPOST /api/auth/logout- Logout user
GET /api/results- Get user's test resultsPOST /api/results- Save new test resultGET /api/results/:id- Get specific result
POST /api/palm/analyze- Analyze palm readingPOST /api/horoscope/generate- Generate horoscopePOST /api/mbti/calculate- Calculate MBTI results
- Sign Up: Create a new account with email and password
- Take Tests: Choose from MBTI, Horoscope, or Palm Reading
- View Results: See your personality assessment results
- Compare: View historical results and track personality insights
- Download: Export your personality profile
The Myers-Briggs Type Indicator test consists of questions that assess personality preferences across four dimensions to determine one of 16 personality types.
Based on your birth date and astrological sign, receive personalized insights about your personality traits and compatibility.
Uses AI-powered analysis with Google's Palm API to provide insights from palm images or manually entered characteristics.
- Passwords are hashed using bcrypt with salt rounds
- JWT tokens for secure session management
- CORS protection for cross-origin requests
- Input validation on both frontend and backend
- Protected routes requiring authentication
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Viren Fern - GitHub Profile
If you encounter any issues or have questions, please open an issue on the GitHub repository.
Happy exploring your personality with PersonaPath! π