{"id":48351063,"url":"https://github.com/zephyrine16/survey","last_synced_at":"2026-05-15T16:01:47.287Z","repository":{"id":341346519,"uuid":"1167548970","full_name":"Zephyrine16/Survey","owner":"Zephyrine16","description":"Interactive feedback system designed to collect user sentiment on menu items with real-time data visualization and PostgreSQL persistence.","archived":false,"fork":false,"pushed_at":"2026-05-09T04:48:47.000Z","size":11679,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-09T06:25:00.749Z","etag":null,"topics":["axios","data-visualization","fullstack","jwt-authentication","postgresql","render-deployment","spring-boot","vuejs"],"latest_commit_sha":null,"homepage":"https://survey-frontend-u6k3.onrender.com/","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Zephyrine16.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-26T12:18:26.000Z","updated_at":"2026-05-09T04:48:51.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Zephyrine16/Survey","commit_stats":null,"previous_names":["zephyrine16/survey"],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/Zephyrine16/Survey","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Zephyrine16%2FSurvey","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Zephyrine16%2FSurvey/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Zephyrine16%2FSurvey/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Zephyrine16%2FSurvey/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Zephyrine16","download_url":"https://codeload.github.com/Zephyrine16/Survey/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Zephyrine16%2FSurvey/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33071582,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-15T11:35:32.926Z","status":"ssl_error","status_checked_at":"2026-05-15T11:35:31.362Z","response_time":103,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["axios","data-visualization","fullstack","jwt-authentication","postgresql","render-deployment","spring-boot","vuejs"],"created_at":"2026-04-05T09:01:46.493Z","updated_at":"2026-05-15T16:01:47.271Z","avatar_url":"https://github.com/Zephyrine16.png","language":"Vue","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 📊 Menu Intelligence \u0026 Feedback Ecosystem\n\nA professional full-stack application designed for high-volume menu evaluation and data-driven insights. This project uses a modern decoupled architecture with a Vue.js frontend and a Java Spring Boot backend.\n\n**🔗 [Live Demo](https://survey-frontend-u6k3.onrender.com)**\n\n---\n\n## 🌟 Project Highlights\n\n- **Dynamic Data Collection:** Custom-built survey engine with 84 curated items.\n- **Admin Analytics:** Real-time dashboard featuring data visualization of user sentiment.\n- **Enterprise Security:** Stateless JWT-based authentication for secure admin access.\n- **Cloud Native:** Fully containerized logic deployed on Render with PostgreSQL persistence.\n\n---\n\n## 🛠️ Technical Stack\n\n| Component | Technology |\n| :--- | :--- |\n| **Frontend** | Vue 3 (Composition API), Vite, Axios |\n| **Backend** | Java 25, Spring Boot, Spring Security |\n| **Database** | PostgreSQL |\n| **Auth** | JWT (JSON Web Tokens) |\n| **Hosting** | Render (CI/CD Pipeline) |\n\n---\n\n## 📂 Project Structure\n\nThis is a **Monorepo** containing both the client and server code:\n\n```text\n/Survey\n├── /backend     # Spring Boot API \u0026 Database logic\n└── /frontend    # Vue.js 3 Single Page Application\n```\n\n---\n\n## 🚀 Getting Started (Local Development Setup)\n\nWelcome to the project! If you are starting from scratch and don't have a local development environment set up for Java or Vue.js, follow these step-by-step instructions to get the application running on your machine.\n\n### 1️⃣ Prerequisites: The Tools You Need\nBefore downloading the code, ensure you have the following installed on your computer:\n\n#### 💻 IDE (Code Editor)\n\nChoose the right development environment for each part of the project:\n\n**For Backend (Recommended):**  \n[IntelliJ IDEA Community Edition](https://www.jetbrains.com/idea/download/) – Highly recommended for Spring Boot development\n\n**For Frontend:**  \n[Visual Studio Code (VS Code)](https://code.visualstudio.com/) - Lightweight and powerful for Vue.js\n\n\u003e **💡 Tip:** You can also use VS Code for the backend if you prefer a single editor for both parts of the project.\n\n---\n\n#### ☕ Java Development Kit (JDK)\n\n**Version 21 or higher is required**\n\n[Download Eclipse Temurin JDK](https://adoptium.net/)\n\n---\n\n#### 🟢 Node.js \u0026 npm\n\nRequired to run the Vue.js frontend. Download the **LTS** (Long Term Support) version.\n\n[Download Node.js](https://nodejs.org/)\n\n---\n\n#### 🐘 PostgreSQL\n\nThe relational database used for this project.\n\n[Download PostgreSQL](https://www.postgresql.org/download/)\n\n\u003e **💡 Important:** Remember the username and password you set during installation!\n\n---\n\n### 2️⃣ Database Setup\n\nBefore running the application, we need to give it a place to store data.\n\n\u003e **⚠️ Note:** The backend will instantly crash on startup if PostgreSQL is not installed and running, as it needs to build a connection pool.\n\n---\n\n#### 🔨 Create Database\n\n1. Open your PostgreSQL tool (pgAdmin or DBeaver)\n2. Create a new database named `postgres` (or your preferred database name)\n\n---\n\n#### ✨ Auto-Generated Schema\n\nYou do **not** need to create the tables manually.\n\nSpring Boot will automatically:\n- Generate the schema\n- Seed the initial data\n\nThis happens when the server starts for the first time.\n\n---\n\n### 3️⃣ Backend Setup (Spring Boot)\n\nThe backend serves the API and connects to the database.\n\n---\n\n#### 📦 Clone the Repository\n\nFirst, clone the repository and navigate to the backend folder:\n\n```bash\ngit clone \u003cyour-repository-url\u003e\ncd \u003cyour-project-folder\u003e/backend\n```\n\n---\n\n#### 🔧 Configure Database Connection\n\nNavigate to your application properties file and update the database credentials:\n\n**Location:** `src/main/resources/application.properties` (or `.yml`)\n\n```properties\nspring.datasource.url=jdbc:postgresql://localhost:5432/postgres\nspring.datasource.username=YOUR_POSTGRES_USERNAME\nspring.datasource.password=YOUR_POSTGRES_PASSWORD\n```\n\n\u003e **💡 Tip:** Make sure these credentials match what you set up in PostgreSQL earlier.\n\nSet these required backend environment variables before startup:\n\n```bash\nexport DATABASE_URL='jdbc:postgresql://localhost:5432/postgres'\nexport DB_USERNAME='your_postgres_username'\nexport DB_PASSWORD='your_postgres_password'\nexport DB_SSL_MODE='disable'\nexport ADMIN_USER=your_admin_username\nexport ADMIN_PASSWORD_HASH='$2a$10$replace_with_bcrypt_hash'\nexport JWT_SECRET='replace_with_a_long_random_secret'\nexport CORS_ALLOWED_ORIGINS='http://localhost:5173'\n```\n\n\u003e **Migration note:** older deployments that used `ADMIN_PASS` must switch to `ADMIN_PASSWORD_HASH` (bcrypt hash only).\nYou can generate a bcrypt hash for your admin password with:\n\n```bash\npython - \u003c\u003c'PY'\nimport bcrypt\nprint(bcrypt.hashpw(b\"your_admin_password\", bcrypt.gensalt()).decode())\nPY\n```\n\n\n---\n\n#### 🚀 Run the Server\n\nYou have three options to start your Spring Boot application:\n\n**Option 1: IntelliJ IDEA (Recommended)**\n\n1. Open the `backend` folder in IntelliJ\n2. Wait for Maven to download all dependencies\n3. Locate `SurveyApplication.java`\n4. Click the green **▶️ Run** button\n\n**Option 2: VS Code**\n\n1. Open the `backend` folder in VS Code\n2. Install the **Extension Pack for Java** and **Spring Boot Extension Pack** from the extensions tab\n3. Once installed, navigate to the `SurveyApplication.java` file and click the small `Run` inline link that appears above the `main` method, or use the \"Spring Boot Dashboard\" in the sidebar\n\n**Option 3: Terminal/Command Line**\n\n**Windows:**\n```bash\nmvnw.cmd spring-boot:run\n```\n\n**Mac/Linux:**\n```bash\n./mvnw spring-boot:run\n```\n\n---\n\n✅ **Your backend should now be running!** Check the console for the port (usually `http://localhost:8080`)\n\n### 4️⃣ Frontend Setup (Vue.js)\nThe frontend is the user interface you interact with in the browser.\n\n#### 📋 Prerequisites\n\n\u003e **⚠️ Important:** Keep your backend server running! Open a **new** terminal window for the frontend setup.\n\n---\n\n#### 📂 Navigate to Frontend\n\n```bash\ncd \u003cyour-project-folder\u003e/frontend\n```\n---\n\n#### 📥 Install Dependencies\n\nInstall all required Node modules:\n\n```bash\nnpm install\n```\n⏱️ *This may take a minute or two...*\n\n---\n\n#### ▶️ Start Development Server\n\nLaunch the Vue development server:\n\n```bash\nnpm run dev\n```\n\nSet frontend environment variables in `frontend/.env`:\n\n```bash\nVITE_API_BASE_URL=http://localhost:8080\nVITE_CLOUDINARY_CLOUD_NAME=your_cloudinary_cloud_name\nVITE_CLOUDINARY_UPLOAD_PRESET=your_upload_preset\n```\n\n---\n\n#### 🌐 Access the Application\n\nOnce the server starts, you'll see a local URL in the terminal (usually `http://localhost:5173`)\n\n**To open the app:**\n- **Windows/Linux:** `Ctrl` + `Click` on the URL\n- **Mac:** `Cmd` + `Click` on the URL\n\nOr copy the URL and paste it into your browser!\n\n---\n\n✅ **Success!** Your frontend should now be live and connected to the backend. Happy coding! 🎉\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzephyrine16%2Fsurvey","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzephyrine16%2Fsurvey","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzephyrine16%2Fsurvey/lists"}