{"id":23679794,"url":"https://github.com/tlklein/mongodb-data-platform-project","last_synced_at":"2026-02-08T11:37:08.505Z","repository":{"id":256111885,"uuid":"797313106","full_name":"tlklein/mongodb-data-platform-project","owner":"tlklein","description":"This project focuses on enhancing a mock application designed to simulate operations for a Houston-area non-profit organization, demonstrating improvements to resource planning and user experience.","archived":false,"fork":false,"pushed_at":"2025-07-29T18:31:15.000Z","size":1035,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-29T21:15:22.753Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","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/tlklein.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":"2024-05-07T15:43:27.000Z","updated_at":"2025-07-29T18:32:03.000Z","dependencies_parsed_at":"2024-09-09T03:57:24.831Z","dependency_job_id":"2794a154-6ac5-4b5b-a7ee-b54af4463e12","html_url":"https://github.com/tlklein/mongodb-data-platform-project","commit_stats":null,"previous_names":["tlklein/mongodb-crud-rest-api"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tlklein/mongodb-data-platform-project","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tlklein%2Fmongodb-data-platform-project","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tlklein%2Fmongodb-data-platform-project/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tlklein%2Fmongodb-data-platform-project/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tlklein%2Fmongodb-data-platform-project/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tlklein","download_url":"https://codeload.github.com/tlklein/mongodb-data-platform-project/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tlklein%2Fmongodb-data-platform-project/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267785965,"owners_count":24144124,"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","status":"online","status_checked_at":"2025-07-29T02:00:12.549Z","response_time":2574,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2024-12-29T17:55:35.128Z","updated_at":"2026-02-08T11:37:08.500Z","avatar_url":"https://github.com/tlklein.png","language":"Vue","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Enterprise Data Platform Project\n\n![Screenshot 2024-12-24 at 10 24 06 PM](398512429-b71af6f2-089b-4e80-9f96-f426f7773ac3.png)\n\n## Project Overview\n\nThis project is a full-stack data platform (MEVN) that models how Community Health Workers (CHWs) manage events, client data, and service sign-ups. This iteration refactors a prototype into a maintainable, production-minded application with role-based access, dynamic service management, and interactive visualizations.\n\nThis project transformed an academic prototype into a production-ready data platform by addressing maintainability, security, and real-world usability gaps. The frontend was refactored to the Vue Composition API to improve code organization and extensibility, while secure authentication with role-based access control enabled differentiated Viewer and Editor workflows. Static service data was replaced with fully dynamic CRUD-backed APIs, and interactive dashboard visualizations were added to surface actionable client and event metrics. \n\nThe result is a more maintainable, extensible, and analytics-driven application aligned with real-world Community Health Worker workflows. \n\n## Tech Stack\n\nFrontend\n- Vue.js 3 - Modern reactive UI framework using the Composition API\n- Vite - Fast build tooling and local development server\n- Tailwind CSS - Utility-first styling for rapid, consistent UI development\n- Pinia - Lightweight, scalable state management\n- Vuelidate - Declarative form validation for complex user inputs\n\n\nBackend\n- Node.js - JavaScript runtime for server-side logic\n- Express.js - RESTful API framework for routing and middleware\n- MongoDB - NoSQL document database for flexible data modeling\n- Mongoose - ODM for schema enforcement, validation, and query abstraction\n\n\nArchitecture \u0026 Practices\n- RESTful API design with clear separation of frontend and backend concerns\n- Role-based access patterns enforced at the API and UI layers\n- Modular component and service structure to improve maintainability and extensibility\n\n## Repo Structure\n```text\n├── backend/                        # Node.js / Express backend (API + auth + data layer)\n│   ├── auth/                       # Authentication \u0026 authorization logic\n│   │   └── authMiddleWare.js       # Middleware enforcing authentication and role-based access\n│   ├── models/                     # Database schema definitions\n│   │   └── models.js               # Mongoose models for users, clients, events, services, orgs\n│   ├── routes/                     # REST API route handlers\n│   │   ├── clients.js              # CRUD endpoints for client records\n│   │   ├── events.js               # Event scheduling and management APIs\n│   │   ├── org.js                  # Organization-level configuration and metadata\n│   │   ├── services.js             # Service catalog CRUD endpoints\n│   │   └── users.js                # User management and role handling\n│   ├── app.js                      # Express app entry point and middleware wiring\n│   ├── create_hash.js              # Utility for generating hashed passwords (auth setup)\n│   ├── package.json                # Backend dependencies and scripts\n│   └── README.md                   # Backend-specific documentation\n├── frontend/                       # Vue 3 frontend application\n│   ├── public/                     # Static assets served directly\n│   │   └── favicon.ico             # Application favicon\n│   ├── src/                        # Frontend source code\n│   │   ├── api/                    # API abstraction layer\n│   │   │   └── api.js              # Centralized HTTP client for backend communication\n│   │   ├── assets/                 # Static frontend assets\n│   │   │   └── DanPersona.svg      # Branding / UI illustration asset\n│   │   ├── components/             # Reusable UI components\n│   │   │   ├── barChart.vue        # Dashboard bar chart visualization\n│   │   │   └── donutZipChart.vue   # Donut chart for client distribution metrics\n│   │   ├── router/                 # Client-side routing\n│   │   │   └── index.js            # Vue Router configuration and route guards\n│   │   ├── store/                  # State management (Pinia)\n│   │   │   └── loggedInUser.js     # Authenticated user state and role context\n│   │   ├── views/                  # Page-level components (routes)\n│   │   │   ├── clientdetails.vue   # Client detail view\n│   │   │   ├── clientform.vue      # Create/edit client workflow\n│   │   │   ├── ConfirmationDialog.vue # Reusable confirmation modal\n│   │   │   ├── eventDetials.vue    # Event detail view\n│   │   │   ├── eventform.vue       # Create/edit event workflow\n│   │   │   ├── findclient.vue      # Client search and discovery\n│   │   │   ├── findevents.vue      # Event search and filtering\n│   │   │   ├── findservice.vue     # Service lookup interface\n│   │   │   ├── home.vue            # Dashboard / landing page\n│   │   │   ├── login.vue           # Authentication entry point\n│   │   │   ├── servicedetails.vue  # Service detail view\n│   │   │   └── serviceform.vue     # Create/edit service workflow\n│   ├── App.vue                     # Root Vue component\n│   ├── index.css                   # Global styles (Tailwind base/custom overrides)\n│   └── README.md                   # Frontend-specific documentation\n├── documentation/                  # Project documentation and planning artifacts\n│   ├── Functional Specification Document.pdf  # Formal functional requirements\n│   └── Project_Timeline_Group_8.xlsx          # Project timeline and milestone tracking\n├── 398512429-b71af6f2-089b-4e80-9f96-f426f7773ac3.png  # Architecture/UI reference image\n├── package-lock.json               # Dependency lockfile (root)\n├── package.json                    # Root-level scripts and shared tooling\n└── README.md                       # Project summary         \n```\n\n## Project Setup\n\n### Backend\n```bash\ncd backend\n# follow backend/README for env vars and run instructions\nnpm install\nnpm run dev\n```\n\n### Frontend\n```bash\ncd frontend\n# follow frontend/README for env vars and run instructions\nnpm install\nnpm run dev\n```\n\nRefer to the backend/README.md and frontend/README.md for environment variables, database setup, and seed scripts.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftlklein%2Fmongodb-data-platform-project","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftlklein%2Fmongodb-data-platform-project","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftlklein%2Fmongodb-data-platform-project/lists"}