{"id":22922427,"url":"https://github.com/ctubase/openheart","last_synced_at":"2026-04-29T17:36:05.165Z","repository":{"id":264430245,"uuid":"893345948","full_name":"CTUbase/OpenHeart","owner":"CTUbase","description":"Ứng dụng hỗ trợ tổ chức phi lợi nhuận trong việc quản lý tình nguyện viên và tổ chức sự kiện một cách dễ dàng","archived":false,"fork":false,"pushed_at":"2024-12-11T07:47:23.000Z","size":569,"stargazers_count":0,"open_issues_count":5,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-02-07T09:14:39.659Z","etag":null,"topics":["lowcode","python","supabase","windmill"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CTUbase.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","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}},"created_at":"2024-11-24T07:27:24.000Z","updated_at":"2024-12-11T07:46:32.000Z","dependencies_parsed_at":"2024-11-24T09:17:45.013Z","dependency_job_id":"06724f53-cce9-4875-a14b-2dc4f408bfe6","html_url":"https://github.com/CTUbase/OpenHeart","commit_stats":null,"previous_names":["ctubase/openheart"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CTUbase%2FOpenHeart","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CTUbase%2FOpenHeart/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CTUbase%2FOpenHeart/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CTUbase%2FOpenHeart/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CTUbase","download_url":"https://codeload.github.com/CTUbase/OpenHeart/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246655775,"owners_count":20812690,"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":["lowcode","python","supabase","windmill"],"created_at":"2024-12-14T08:10:07.930Z","updated_at":"2026-04-29T17:36:05.122Z","avatar_url":"https://github.com/CTUbase.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Github license](https://img.shields.io/github/license/CTUbase/OpenHeart.svg 'Github license')](https://github.com/CTUbase/OpenHeart/blob/master/LICENSE)\n[![Open issues](https://img.shields.io/github/issues/CTUbase/OpenHeart.svg 'Open issues')](https://github.com/CTUbase/OpenHeart/issues)\n[![Open Pull Requests](https://img.shields.io/github/issues-pr/CTUbase/OpenHeart.svg 'Open Pull Requests')](https://github.com/CTUbase/OpenHeart/pulls)\n[![Commit activity](https://img.shields.io/github/commit-activity/m/CTUbase/OpenHeart.svg 'Commit activity')](https://github.com/CTUbase/OpenHeart/graphs/commit-activity)\n[![GitHub contributors](https://img.shields.io/github/contributors/CTUbase/OpenHeart.svg 'Github contributors')](https://github.com/CTUbase/OpenHeart/graphs/contributors)\n\n# OpenHeart\n\n\u003ca href=\"https://github.com/CTUbase/OpenHeart/issues/new?assignees=\u0026labels=\u0026projects=\u0026template=bug_report.md\u0026title=%F0%9F%90%9B+Bug+Report%3A+\"\u003eBug Report ⚠️\n\u003c/a\u003e\n\u003ca href=\"https://github.com/CTUbase/OpenHeart/issues/new?assignees=\u0026labels=\u0026projects=\u0026template=feature_request.md\u0026title=RequestFeature:\"\u003eRequest Feature 👩‍💻\u003c/a\u003e\n\nỨng dụng hỗ trợ tổ chức phi lợi nhuận trong việc quản lý tình nguyện viên và tổ chức sự kiện một cách dễ dàng. Đây là nền tảng kết nối những người muốn tham gia tình nguyện với các cơ hội phù hợp, nhằm tạo ra tác động tích cực trong cộng đồng.\n\nMục tiêu của hệ thống là:\n1. **Tăng cường hoạt động tình nguyện**: Giúp mọi người, đặc biệt là thế hệ trẻ (Gen Z), dễ dàng tìm kiếm và tham gia các hoạt động tình nguyện phù hợp với sở thích và thời gian của họ.\n\n2. **Hỗ trợ tổ chức phi lợi nhuận**: Cung cấp các công cụ giúp các tổ chức dễ dàng quản lý sự kiện, theo dõi tình nguyện viên, và báo cáo tác động của các hoạt động.\n\n3. **Xây dựng cộng đồng tích cực**: Tạo điều kiện để mọi người gắn kết, tham gia các hoạt động có ý nghĩa và đóng góp cho xã hội một cách bền vững.\n\n4. **Đơn giản hóa quy trình quản lý tình nguyện**: Loại bỏ các rào cản kỹ thuật bằng cách số hóa quy trình, từ đăng ký, tổ chức đến theo dõi và ghi nhận đóng góp của tình nguyện viên.\n\nDự án được thực hiện trong cuộc thi [Phần Mềm Nguồn Mở-Olympic Tin học Sinh viên Việt Nam 2024]([https://www.olp.vn/procon-pmmn/ph%E1%BA%A7n-m%E1%BB%81m-ngu%E1%BB%93n-m%E1%BB%9F](https://www.olp.vn/procon-pmmn/ph%E1%BA%A7n-m%E1%BB%81m-ngu%E1%BB%93n-m%E1%BB%9F)). Được open source theo giấy phép [Apache v2.0](https://opensource.org/license/apache-2-0) bởi đội tác giả CTUBase.\n\n\n## Chức Năng Chính\n\nProject tập trung vào các chức năng chính như sau:\n\n-   Tạo và quản lý các sự kiện tình nguyện đối với tổ chức.\n-   Theo dỗi và đăng ký các sự kiện tình nguyện đối với tình nguyện viên.\n\n## 👩‍💻 Tổng Quan Hệ Thống\n\nHệ thống sử dụng [Windmill](https://www.windmill.dev/) cho front-end và workflow cùng với [Supabase](https://supabase.com/) cho backend:\n\u003cimg loading=\"lazy\" src=\"./docs/images/lowcode_architecture.png\" alt=\"Architecture\" max-height=600\u003e\n\n## Hướng Dẫn Cài Đặt\n\n### Yêu Cầu 📋\n\nĐể cài đặt và chạy được dự án, trước tiên bạn cần phải cài đặt các công cụ bên dưới. Hãy thực hiện theo các hướng dẫn cài đặt sau, lưu ý chọn hệ điều hành phù hợp với máy tính của bạn:\n-   [Node JS](https://nodejs.org/en/download/prebuilt-installer): sử dụng npm giúp cài đặt windmill CLI và supabase CLI.\n-   [Windmill CLI](https://docs.docker.com/get-docker/): cài đặt frontend của hệ thống\n-   [Supabase CLI](https://supabase.com/docs/guides/local-development/cli/getting-started?queryGroups=platform\u0026platform=npx\u0026queryGroups=access-method\u0026access-method=studio): cài đặt backend của hệ thống.\n-   [Docker Desktop](https://docs.docker.com/desktop/setup/install/windows-install/): (tùy chọn) dành cho cài đặt self-host.\n\n### 🔨 Cài Đặt\n\nTrước hết, hãy clone dự án về máy tính của bạn:\n\n```bash\ngit clone https://github.com/CTUbase/OpenHeart.git \n```\nsau đó hãy cd đến OpenHeart:\n```bash\ncd OpenHeart\n```\n### Chạy backend với Supabase\n\n**Đối với self-host:** cd đến thư mục /supabase và chạy CLI:\n```bash\ncd supabase\nnpx supabase start \n```\nSau khi hoành thành, supabase sẽ chạy ở địa chỉ \u003ca href=\"http://localhost:8000/\"\u003elocalhost:8000\u003c/a\u003e.\n\n**Đối với supabase cloud:** \n-   **Bước 1:** cd đến thư mục /supbase và login vào tài khoản supabase của bạn bằng [personal access token](https://supabase.com/dashboard/account/tokens):\n```\ncd supabase\nnpx supabase login\n```\n-   **Bước 2:** Tạo một project mới trên Supabase, sau đó kết với project thông qua project ID:\n```bash\nnpx supbase link --project-ref [PROJECT_ID]\n```\nBạn có thể tìm thấy project ID trên thanh URL tại Dashboard:\n```bash\nhttps://supabase.com/dashboard/project/\u003cproject-id\u003e\n```\n-   **Bước 3:** Đẩy dữ liệu lên project:\n```bash\nnpx supabase db push\n```\n### Chạy frontend với Windmill\n\n-   **Bước 1:** Tạo một tài khoản trên [windmill](https://app.windmill.dev/user/login) hoặc cài đặt [windmill self-host với Docker](https://www.windmill.dev/docs/advanced/self_host#docker) \n\n-   **Bước 2**: Tạo một workspace với tên **OpenHeart** (bạn có thể tùy chọn tên workspace).\n-   **Bước 3**: cd đến thư mục *windmill* và tạo workspace với tên tương ứng bằng windmill CLI:\n```bash\ncd windmill\nwmill workspace add [workspace_name] [workspace_id] [remote]\n# vi du:\nwmill workspace add OpenHeart OpenHeart123 https://app.windmill.dev/\n``` \n-   **Bước 4**:  Sau đó, Terminal sẽ yêu cầu đăng nhập windmill qua browser hoặc token. Để đơn giản, hãy chọn browser, windmill sẽ hiển thị liên kết với trình duyệt để bạn xác nhận.\n-   **Bước 5**: Đẩy code lên windmill:\n```bash\nwmill sync push\n```\n-   **Bước 6**: tìm chọn script *cập nhật variable* để kết nối với [windmill với supbase](https://www.windmill.dev/docs/integrations/supabase#get-the-api-keys):\n\u003cimg loading=\"lazy\" src=\"./docs/images/installation_windmil_guide_1.png\" alt=\"installation_guide\" max-height=600\u003e\n\n-   **Bước 7**: Truy cập vào **trang đăng nhập** để bắt đầu sử dụng.\n\n### Cài đặt plugin AI trên Windmill\nXem hướng dẫn [tại đây](https://github.com/CTUbase/windmill-plugins).\n## 🙌 Đóng góp cho dự án\n\n\u003ca href=\"https://github.com/CTUbase/OpenHeart/issues/new?assignees=\u0026labels=\u0026projects=\u0026template=bug_report.md\u0026title=%F0%9F%90%9B+Bug+Report%3A+\"\u003eBug Report ⚠️\n\u003c/a\u003e\n\u003ca href=\"https://github.com/CTUbase/OpenHeart/issues/new?assignees=\u0026labels=\u0026projects=\u0026template=feature_request.md\u0026title=RequestFeature:\"\u003eRequest Feature 👩‍💻\u003c/a\u003e\n\nNếu bạn muốn đóng góp cho dự án, hãy đọc [CONTRIBUTING.md](.github/CONTRIBUTING.md) để biết thêm chi tiết.\n\nMọi đóng góp của các bạn đều được trân trọng, đừng ngần ngại gửi pull request cho dự án.\n\n## Liên hệ\n\n-   Nguyễn Đăng Khoa: ndkhoa1000@gmail.com\n-   Phạm Trí Minh: triminh00@gmail.com\n-   Nguyễn Đoàn Hoàng Phúc: hoangphuc090104@gmail.com\n\n## 📝 License\n\nThis project is licensed under the terms of the [Apache 2.0](LICENSE) license.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fctubase%2Fopenheart","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fctubase%2Fopenheart","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fctubase%2Fopenheart/lists"}