{"id":28731755,"url":"https://github.com/badrisinghoo7/temperol-ai","last_synced_at":"2025-07-30T01:07:22.554Z","repository":{"id":298936743,"uuid":"1001490795","full_name":"badrisinghoo7/Temperol-AI","owner":"badrisinghoo7","description":"Profile Editor is a full-stack application that allows users to log in, access their profile, update their details, and persist changes through a Temporal workflow — ensuring instant and consistent updates to the database using background job execution.","archived":false,"fork":false,"pushed_at":"2025-06-13T17:27:01.000Z","size":85,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-13T18:26:29.237Z","etag":null,"topics":["auth0","expressjs","mongodb","nodejs","react-router-dom","reactjs","temporalio"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/badrisinghoo7.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}},"created_at":"2025-06-13T13:22:49.000Z","updated_at":"2025-06-13T17:27:04.000Z","dependencies_parsed_at":"2025-06-13T18:37:04.096Z","dependency_job_id":null,"html_url":"https://github.com/badrisinghoo7/Temperol-AI","commit_stats":null,"previous_names":["badrisinghoo7/temperol-ai"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/badrisinghoo7/Temperol-AI","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/badrisinghoo7%2FTemperol-AI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/badrisinghoo7%2FTemperol-AI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/badrisinghoo7%2FTemperol-AI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/badrisinghoo7%2FTemperol-AI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/badrisinghoo7","download_url":"https://codeload.github.com/badrisinghoo7/Temperol-AI/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/badrisinghoo7%2FTemperol-AI/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260034494,"owners_count":22949068,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["auth0","expressjs","mongodb","nodejs","react-router-dom","reactjs","temporalio"],"created_at":"2025-06-15T19:00:37.754Z","updated_at":"2025-07-30T01:07:22.486Z","avatar_url":"https://github.com/badrisinghoo7.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🚀 Profile Editor\n\n**Profile Editor** is a full-stack application that allows users to log in, access their profile, update their details, and persist changes through a Temporal workflow — ensuring instant and consistent updates to the database using background job execution.\n\n\n\n## 🛠 Tech Stack\n\n- **Frontend:** React + Vite\n- **Backend:** Node.js + Express + MongoDB\n- **Workflow Orchestration:** [Temporal.io](https://temporal.io/)\n- **Containerization:** Docker + Docker Compose\n\n---\n\n## 🧠 Temporal Workflow Usage\n\nThis project leverages **Temporal** to manage the user profile update process in the background. Instead of connecting to the database repeatedly, a **`userUpdateWorkflow`** is triggered on each update, and Temporal handles the persistence and reliability of the update.\n\n---\n\n---\n\n## ✅ Features\n\n* 🔐 Login using Auth0\n* 👤 View \u0026 update profile details\n* ⚙️ Backend orchestrated using Temporal workflows\n* 🧠 Async updates with Temporal queue\n* 🐳 Easy Docker-based setup\n\n---\n\n## 🧠 Temporal Workflow Logic\n\n* User clicks **Update Profile**\n* Backend route `/api/users/:id` triggers a **PUT** request\n* Temporal client starts a workflow (`updateUserWorkflow`) with task queue `user-queue`\n* Temporal worker handles the DB update using activities\n* Ensures reliable background execution with retries and monitoring\n\n---\n\n## 📂 Folder Structure\n\n```\nproject-root/\n├── backend/\n│   ├── activities/userActivities.ts\n│   ├── models/User.ts\n│   ├── routes/userRoutes.ts\n│   ├── workflows/userWorkflows.ts\n│   ├── .env\n│   └── index.ts\n├── frontend/\n│   ├── public/\n│   ├── src/\n│   │   ├── assets/\n│   │   ├── auth/\n│   │   │   ├── auth0-context.ts\n│   │   │   ├── AuthProvider.tsx\n│   │   │   └── useAuth0.ts\n│   │   ├── Pages/\n│   │   │   ├── Profile.css\n│   │   │   └── Profile.tsx\n│   │   ├── App.tsx\n│   │   └── main.tsx\n│   ├── index.html\n│   ├── package.json\n│   └── package-lock.json\n├── docker-compose/\n│   └── docker-compose.yml\n└── README.md\n```\n\n---\n\n## 🧪 Environment Variables\n\n### 🔐 Frontend (`.env`)\n```env\nVITE_AUTH0_DOMAIN=dev-0fbpkzbuaedmrghn.us.auth0.com\nVITE_AUTH0_CLIENT_ID=hx0sTLTqCvHgEzyCi0ycKqeVFjETyY4I\n```\n\n### 🔐 Backend (`.env`)\n```env\nMONGO_URI=mongodb+srv://badri:singh@cluster0.frdj16f.mongodb.net/temperolAiDB?retryWrites=true\u0026w=majority\u0026appName=Cluster0\n```\n\n### 🐳 Docker (`docker-compose/.env`)\n```env\nCOMPOSE_PROJECT_NAME=temporal\nCASSANDRA_VERSION=3.11.9\nELASTICSEARCH_VERSION=7.17.27\nMYSQL_VERSION=8\nTEMPORAL_VERSION=1.27.2\nTEMPORAL_ADMINTOOLS_VERSION=1.27.2-tctl-1.18.2-cli-1.3.0\nTEMPORAL_UI_VERSION=2.34.0\nPOSTGRESQL_VERSION=16\nPOSTGRES_PASSWORD=temporal\nPOSTGRES_USER=temporal\nPOSTGRES_DEFAULT_PORT=5432\nOPENSEARCH_VERSION=2.5.0\n```\n\n---\n\n## 🚀 Local Development Setup\n\n### 1. Clone the Repository\n\n```bash\nhttps://github.com/badrisinghoo7/Temperol-AI.git\ncd Temperol-AI\n```\n\n---\n\n### 2. Start Temporal Services via Docker\n\nClone the official Temporal Docker Compose setup:\n\n```bash\ngit clone https://github.com/temporalio/docker-compose.git\ncd docker-compose\ndocker-compose up -d\n```\n\n\u003e This will start Temporal server and UI.  \n\u003e Temporal UI: [http://localhost:8080](http://localhost:8080)\n\n---\n\n### 3. Run Backend\n\n```bash\ncd backend\nnpm install\nnpm run dev\n```\n\n\u003e Backend runs on: [http://localhost:5000](http://localhost:5000)\n\n---\n\n### 4. Run Frontend\n\n```bash\ncd frontend\nnpm install\nnpm run dev\n```\n\n\u003e Frontend runs on: [http://localhost:5173](http://localhost:5173)\n\n\n\n## ✨ Author\n\n👨‍💻 [@badrisinghoo7](https://github.com/badrisinghoo7)\n\n---\n\n## 📜 License\n\nThis project is licensed under the MIT License. See `LICENSE` for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbadrisinghoo7%2Ftemperol-ai","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbadrisinghoo7%2Ftemperol-ai","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbadrisinghoo7%2Ftemperol-ai/lists"}