{"id":22046762,"url":"https://github.com/alexisanzieu/acti","last_synced_at":"2025-08-09T02:11:25.391Z","repository":{"id":41772426,"uuid":"425371967","full_name":"AlexisAnzieu/Acti","owner":"AlexisAnzieu","description":"Reusable open source platform made to centralize whatever you want (activities in Quebec in this case)","archived":false,"fork":false,"pushed_at":"2025-07-05T03:46:13.000Z","size":16474,"stargazers_count":8,"open_issues_count":3,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-07-05T04:38:48.860Z","etag":null,"topics":["chakra-ui","nextjs","react","supabase","vercel"],"latest_commit_sha":null,"homepage":"https://www.acti.quebec/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AlexisAnzieu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2021-11-06T23:36:30.000Z","updated_at":"2025-07-05T03:46:17.000Z","dependencies_parsed_at":"2025-05-08T16:54:52.132Z","dependency_job_id":"78f3a2db-6349-45e8-91a8-ae712746fd4f","html_url":"https://github.com/AlexisAnzieu/Acti","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/AlexisAnzieu/Acti","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexisAnzieu%2FActi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexisAnzieu%2FActi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexisAnzieu%2FActi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexisAnzieu%2FActi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AlexisAnzieu","download_url":"https://codeload.github.com/AlexisAnzieu/Acti/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexisAnzieu%2FActi/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269518731,"owners_count":24430644,"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-08-09T02:00:10.424Z","response_time":111,"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":["chakra-ui","nextjs","react","supabase","vercel"],"created_at":"2024-11-30T13:19:56.018Z","updated_at":"2025-08-09T02:11:25.372Z","avatar_url":"https://github.com/AlexisAnzieu.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cbr\u003e\n\n\u003ch1 align=\"center\"\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/11615615/146594532-b7aeb31d-5b52-43c8-8216-4183ce4e24a5.png\" width=\"500\" /\u003e\n \u003c/h1\u003e\n\n\u003ch4 align=\"center\"\u003eReusable open source platform made to centralize whatever you want (activities in Quebec in this case).\u003c/h4\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=AlexisAnzieu_Acti\u0026metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=AlexisAnzieu_Acti)\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=AlexisAnzieu_Acti\u0026metric=alert_status)](https://sonarcloud.io/summary/new_code?id=AlexisAnzieu_Acti)\n[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=AlexisAnzieu_Acti\u0026metric=reliability_rating)](https://sonarcloud.io/summary/new_code?id=AlexisAnzieu_Acti)\n[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=AlexisAnzieu_Acti\u0026metric=security_rating)](https://sonarcloud.io/summary/new_code?id=AlexisAnzieu_Acti)\n[![MIT license](https://img.shields.io/badge/License-MIT-blue.svg)](https://lbesson.mit-license.org/)\n\n\u003c/div\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#about\"\u003eAbout\u003c/a\u003e •\n  \u003ca href=\"#tiers\"\u003eTiers\u003c/a\u003e •\n  \u003ca href=\"#features\"\u003eFeatures\u003c/a\u003e •\n  \u003ca href=\"#installation\"\u003eInstallation\u003c/a\u003e •\n  \u003ca href=\"#database\"\u003eDatabase\u003c/a\u003e •\n\u003c/p\u003e\n\n---\n\n## About\n\nAfter two years spent surveying Quebec, an idea popped into my head: why not referencing all theses adventures within a hand-sewn website? So I could also implement all the JS fatigue in one place 💪\n\n## Tiers\n\nThis idea uses a lot of tiers library/framework/Saas products without which it can't work. All of them are free to use as long as you develop an open source project.\n\n### Saas Product\n\n-   **Backend API**: Vercel\n-   **Database**: Supabase\n-   **Deployment**: Vercel\n-   **Code quality**: SonarCloud\n-   **Analytics**: Google Analytics\n-   **Newsletter**: Sendinblue\n\n### Very useful JS libraries\n\n-   **Styling**: Chakra-UI\n-   **Language**: JS/Typescript/React\n-   **Framework**: NextJS\n-   **Map**: Leaflet\n-   **Form validation**: Formik\n-   **Internationalization**: I18next\n-   **Date calculation**: Dayjs\n-   **Code formatting**: Eslint\n\n## Installation\n\n1. Make sure that you have [nodeJS](https://nodejs.org/en/) installed on your machine.\n2. Fill the [.env.example](.env.example) file accordingly the instructions then rename it to `.env`.\n3. The backend is decoupled from the frontend and lives in `pages/api/` folder. Here is where Supabase SaaS is called but you could replace it by any external services.\n\n## Features\n\n-   Analytics\n-   [Different rendering strategies](https://www.patterns.dev/posts/rendering-patterns/) for speediness (CSR on the main list and SSG for singleton pages)\n-   Filtering\n-   Internationalization\n-   Map service\n-   Searching\n\n\u003cimg width=\"1907\" alt=\"Screen Shot 2021-12-23 at 1 25 14 PM\" src=\"https://user-images.githubusercontent.com/11615615/147278973-a76f0f45-aa23-4d8f-b6d8-2ef912a43990.png\"\u003e\n\n\u003cimg width=\"1907\" alt=\"Screen Shot 2021-12-23 at 1 26 43 PM\" src=\"https://user-images.githubusercontent.com/11615615/147279053-b6b138bc-e653-4af6-8ac1-3f7c976150bc.png\"\u003e\n\n\u003cimg width=\"1907\" alt=\"Screen Shot 2021-12-23 at 1 27 28 PM\" src=\"https://user-images.githubusercontent.com/11615615/147279100-844df141-2b9a-4b4a-ba6c-9ded91fbaf20.png\"\u003e\n\n## Database\n\nSupabase SaaS uses Postgresql under the hood and the schema is built like this:\n| column name | data type |\n| ---------------- | ------------------------ |\n| compagny | text |\n| picture_url | text |\n| address | text |\n| city | text |\n| postal_code | text |\n| phone | text |\n| price | bigint |\n| carbon_footprint | bigint |\n| id | uuid |\n| email | text |\n| website | text |\n| created_at | timestamp with time zone |\n| name | jsonb |\n| social_media | json |\n| description | jsonb |\n| location | json |\n| review | jsonb |\n| seasons | ARRAY |\n\nOpenapi specifications allows us to generate [a typescript file on fly](https://supabase.com/docs/reference/javascript/generating-types) corresponding to this schema. You can find it in the repo [here](/type/supabase.ts).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexisanzieu%2Facti","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexisanzieu%2Facti","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexisanzieu%2Facti/lists"}