# Semblance Synthetic Society A platform for creating and managing synthetic personas for focus groups and market research. ## Project info **URL**: https://lovable.dev/projects/ee7a424f-7f6c-4b5d-9645-e66074cea7d3 ## Features - Create and manage synthetic personas with detailed profiles - Organize personas into focus groups - Run interactive focus group sessions - Analyze results and extract insights - MongoDB-based backend for data persistence - User authentication and access control ## Getting Started ### Prerequisites - Node.js & npm installed - [install with nvm](https://github.com/nvm-sh/nvm#installing-and-updating) - Python 3.8+ installed for the backend - MongoDB installed and running locally (default configuration: mongodb://localhost:27017) ### Installation ```sh # Step 1: Clone the repository git clone # Step 2: Navigate to the project directory cd # Step 3: Install frontend dependencies npm install # Step 4: Install backend dependencies cd backend python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate pip install -r requirements.txt cd .. ``` ### Running the Application Use the provided start script to run both frontend and backend: ```sh ./start.sh ``` The start script will: 1. Check for and start MongoDB if needed 2. Set up the Python virtual environment 3. Install dependencies 4. Populate the database with sample personas and focus groups 5. Start both the backend and frontend servers Or run them separately: ```sh # Start the backend cd backend source venv/bin/activate python run.py # In another terminal, run the frontend npm run dev ``` The frontend will be available at http://localhost:5173 The backend API is available at http://localhost:5137/api ### Default Login - Username: user - Password: pass ## Technology Stack ### Frontend - Vite - TypeScript - React - React Router - shadcn-ui - Tailwind CSS - Axios for API requests ### Backend - Python - Flask - PyMongo (MongoDB client) - JWT for authentication ## Project Structure - `/src`: Frontend source code - `/components`: React components - `/contexts`: React contexts for state management - `/hooks`: Custom React hooks - `/lib`: Utility functions and API client - `/pages`: Main application pages - `/types`: TypeScript type definitions - `/backend`: Python backend - `/app`: Flask application - `/models`: Database models - `/routes`: API endpoints - `run.py`: Backend entry point ## Deployment The application is configured to be deployed at the `/semblance/` path. For hosting: 1. Build the frontend: ```sh npm run build ``` 2. Deploy the backend using a WSGI server like Gunicorn: ```sh cd backend gunicorn -w 4 "app:create_app()" ``` ## Contributing 1. Fork the repository 2. Create your feature branch (`git checkout -b feature/amazing-feature`) 3. Commit your changes (`git commit -m 'Add some amazing feature'`) 4. Push to the branch (`git push origin feature/amazing-feature`) 5. Open a Pull Request