{"id":25013867,"url":"https://github.com/code4recovery/central","last_synced_at":"2025-04-12T22:06:32.917Z","repository":{"id":152243386,"uuid":"612793298","full_name":"code4recovery/central","owner":"code4recovery","description":"recovery meeting content management system","archived":false,"fork":false,"pushed_at":"2024-11-11T18:41:00.000Z","size":912,"stargazers_count":2,"open_issues_count":5,"forks_count":1,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-04-12T22:06:26.771Z","etag":null,"topics":["prisma","remix","tailwindcss"],"latest_commit_sha":null,"homepage":"https://central.aa-intergroup.org/","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/code4recovery.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}},"created_at":"2023-03-12T01:34:10.000Z","updated_at":"2024-11-11T18:41:05.000Z","dependencies_parsed_at":null,"dependency_job_id":"e8a067e8-b188-4314-b54b-d11b5a3dc80f","html_url":"https://github.com/code4recovery/central","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/code4recovery%2Fcentral","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/code4recovery%2Fcentral/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/code4recovery%2Fcentral/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/code4recovery%2Fcentral/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/code4recovery","download_url":"https://codeload.github.com/code4recovery/central/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248637768,"owners_count":21137538,"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":["prisma","remix","tailwindcss"],"created_at":"2025-02-05T07:16:35.192Z","updated_at":"2025-04-12T22:06:32.874Z","avatar_url":"https://github.com/code4recovery.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Central\n\nCentral is a free content management system to help service entities manage their directory of recovery meetings. It is currently in active development. Once it's ready, it will be deployed and usable by service entities for free with minimal configuration.\n\n## Developer info\n\nCentral is developed on the MERN stack (MongoDB, Express, React, Node.js). It uses these frameworks:\n\n- [Remix](https://remix.run/)\n- [Prisma](https://www.prisma.io/)\n- [Tailwind CSS](https://tailwindcss.com/)\n\nYou can set up and run Central yourself. It requires these third-party services:\n\n- Google [Geocoding](https://developers.google.com/maps/documentation/geocoding/overview), [Sheets](https://developers.google.com/sheets/api), and [Time Zone](https://developers.google.com/maps/documentation/timezone/overview) APIs\n- [MongoDB](https://www.mongodb.com/)\n- [SendGrid](https://sendgrid.com/)\n- Sentry (coming soon)\n\n## Run locally\n\nStart by creating a `.env` file in your project root with the following content, then continue to the next steps to configure services.\n\n```bash\n# Base URL (to populate edit URLs)\nBASE_URL=\"http://localhost:3000\"\n\n# Random security salt (to protect sessions)\nSESSION_SECRET=\"\u003cmake.up.a.cryptographic.salt\u003e\"\n\n# MongoDB connection URL (to store data)\nDATABASE_URL=\"mongodb+srv://\u003cuser\u003e:\u003cpassword\u003e@cluster0.\u003ccluster\u003e.mongodb.net/\u003cdatabase\u003e\"\n\n# Google Geocoding, Sheets, and Time Zone APIs\nGOOGLE_API_KEY=\"\u003cyour.google.api.key\u003e\"\n\n# SendGrid (to send email)\nSENDGRID_API_KEY=\"\u003cyour.sendgrid.api.key\u003e\"\nSENDGRID_SENDER=\"\u003cyour.sender@address.com\u003e\"\n```\n\n### Set a base URL\n\nThis will be the base for the `edit_url`s in your JSON which link back to meeting entries. Use your Central URL without the trailing slash.\n\n### Create a session secret\n\nYou can type any string of random characters here, or use a random string generator.\n\n### Set up MongoDB\n\n1. Install MongoDB (requires a replica set) or sign up for [Atlas](https://www.mongodb.com/atlas/database)\n1. Create a database\n1. Copy the connection string to your `.env`\n\n### Set up Google Geocoding and Time Zone APIs\n\n1. In Cloud Console, enable the Geocoding and Time Zone APIs\n1. Go to Credentials \u003e Create Credentials\n1. Restrict to these two APIs (if you can figure out how to restrict it to the proper IP addresses for Cloud Run, let us know!)\n1. Copy the API key and add it to your `.env`\n\n### Set up SendGrid\n\n1. Set up an account at SendGrid\n1. Get API key and sender email, add them to `.env`\n\n### Run locally\n\n1. Run `npm i` (you don't need to do this every time but should do it when you pull changes)\n1. Now run `npm run dev`. Your site should be running at [http://localhost:3000/](http://localhost:3000/)\n\n### Deploy\n\nWe are evaluating options for the best method of deploying Central. Currently we have this working on Google [Cloud Run](https://cloud.google.com/run) and a VPS using [Laravel Forge](https://forge.laravel.com/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcode4recovery%2Fcentral","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcode4recovery%2Fcentral","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcode4recovery%2Fcentral/lists"}