{"id":49474034,"url":"https://github.com/aydrian/tabnine-charity-activations","last_synced_at":"2026-04-30T18:04:29.187Z","repository":{"id":208002564,"uuid":"720443935","full_name":"aydrian/tabnine-charity-activations","owner":"aydrian","description":"An app to track charity activations at Tabnine events","archived":false,"fork":false,"pushed_at":"2024-04-08T17:35:24.000Z","size":3392,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-07T02:02:03.091Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/aydrian.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}},"created_at":"2023-11-18T14:04:03.000Z","updated_at":"2023-11-19T01:41:53.000Z","dependencies_parsed_at":"2023-11-19T02:40:57.034Z","dependency_job_id":"7c60e7f5-dc91-47c3-94a0-c80c421f72f8","html_url":"https://github.com/aydrian/tabnine-charity-activations","commit_stats":null,"previous_names":["aydrian/tabnine-charity-activations"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/aydrian/tabnine-charity-activations","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aydrian%2Ftabnine-charity-activations","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aydrian%2Ftabnine-charity-activations/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aydrian%2Ftabnine-charity-activations/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aydrian%2Ftabnine-charity-activations/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aydrian","download_url":"https://codeload.github.com/aydrian/tabnine-charity-activations/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aydrian%2Ftabnine-charity-activations/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32472424,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"ssl_error","status_checked_at":"2026-04-30T13:12:06.837Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":"2026-04-30T18:04:28.148Z","updated_at":"2026-04-30T18:04:29.176Z","avatar_url":"https://github.com/aydrian.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Charity Activations\n\nThis application tracks charity activations per event. Attendees will see a donations dashboard and be able to select a charity to be donated to by scanning a QR code and completing a form. Optional lead data can be requested. The dashboard will update in real time as donation choices are made.\n\n## 🥞 Tech Stack\n\n- Web Framework - 💿 [Remix](https://remix.run/)\n- Database - 🪳 [CockroachDB](https://www.cockroachlabs.com/)\n- Database ORM - △ [Prisma](https://www.prisma.io/)\n- Styling - 🍃 [Tailwind CSS](https://tailwindcss.com/)\n- UI Components - 🧱 [shadcn/ui](https://ui.shadcn.com/) and [Radix](https://www.radix-ui.com/)\n- Hosting - 🎈 [Fly.io](https://fly.io/)\n\n## 🎨 Customization\n\nParts of this application are ready to customize for you use. You can update information in the application config file (`/app/app.config.ts`). Styles can be updated using the Tailwind CSS config file (`tailwind.config.ts`). You can even specify a logo by updating the Company Logo component (`/app/components/company-logo.tsx`).\n\n## 💾 Database Setup\n\nThis application uses Prisma to manage our database.\n\n### 🧳 Migrate Schema Changes\n\n1. Update the `DATABASE_URL` environment variable with your CockroachDB connection string.\n2. Run `npx prisma migrate` to create the database schema.\n\nYou can view the [ER Diagram](./erd.md) generated from the Prisma Schema.\n\n### 🚰 Create the Changefeed\n\n\u003csup\u003eThis only needs to be done once.\u003c/sup\u003e\n\nIn a terminal, run\n\n```shell\nnpx prisma db execute --file ./prisma/sql/set_cluster_settings.sql\nnpx prisma db execute --file ./prisma/sql/create_changefeed_prod.sql\n```\n\n\u003e **Note**\n\u003e You may also execute the contents of [set_cluster_settings.sql](./prisma/sql/set_cluster_settings.sql) and [create_changefeed_prod.sql](./prisma/sql/create_changefeed_prod.sql) in a sql shell.\n\n## 🔐 Environment Variables\n\nThe following are other environment variables you need to set for the application to opperate. You can find them all in the `.env.sample` file.\n\n**Remix Auth**\n\n- `SESSION_SECRET` - any string will work or you can generate one with `openssl rand -hex 32`.\n\nIf you are using the Okta Strategy, you'll need the following from your [Okta web app](https://developer.okta.com/docs/guides/sign-into-web-app/nodeexpress/main/#understand-the-callback-route):\n\n- `OKTA_DOMAIN` - Your Okta domain\n- `OKTA_CLIENT_ID` - Your Okta client id\n- `OKTA_CLIENT_SECRET` - Your Okta client secret\n- `OKTA_CALLBACK_URL` - Your Okta callback url\n\n## 🧑‍💻 Development\n\nYou should be able to develop without the need to be connected.\n\n### 🪳 Set up a local CockroachDB Node\n\nTo create a local environment that most closely resembles our production CockroachDB serverless cluster, we'll start a local CockroachDB node running in [demo mode](https://www.cockroachlabs.com/docs/stable/cockroach-demo.html). This will allow us to start a temporary, in-memory CockroachDB single-node cluster with a temporary Enterprise license.\n\n1. [Install CockroachDB](https://www.cockroachlabs.com/docs/v23.1/install-cockroachdb) on our local machine.\n1. Make sure your [Prisma Seed file](./prisma/seed.ts) is set up to create any initial data needed.\n1. In a terminal window, run `./dbserver_start.sh` to start a local CockroachDB node running in demo mode.\n1. Update the `DATABASE_URL` in the your .env file to point to your local database.\n\n   ```shell\n    DATABASE_URL=\"postgresql://root@localhost:26257/charity_activations\"\n   ```\n\n1. In a new terminal window or tab, run `./dbserver_init.sh`. This script will handle a few tasks:\n   - Create the charity_events database in your local node.\n   - Create the schema using Prisma\n   - Seed the database using the [Prisma Seed file](./prisma/seed.ts)\n   - Create the Changefeed that handles new donations on the Event Dashboard\n\n\u003e **Note**\n\u003e If you shut down your local CockroachDB server, you will lose any data added and will need to run the `./dbserver_start.sh` and `./dbserver_init.sh` scripts again.\n\n### 💿 Run the Remix app locally with HTTPS\n\nIn order to use Changefeeds during local development, we need to configure our Remix developer envronment to use HTTPS.\n\n1. Follow the [How to set up local HTTPS](https://remix.run/docs/en/main/other-api/dev-v2#how-to-set-up-local-https) instructions from [Remix](https://remix.run/) to create a certificate for localhost. Be sure to create a certs folder in the root of this project and save the key.pem and cert.pem in there.\n1. Make sure the project's local dependencies are installed:\n   ```sh\n   npm install\n   ```\n1. Start the Remix development server like so:\n   ```sh\n   npm run dev\n   ```\n1. Open up [https://localhost:3000](https://localhost:3000) and you should be ready to go!\n\n🎉 You're ready to start developing. Look ma! No interwebs!\n\n## 🚧 Deployment\n\nThis app is set up to deploy to [Fly.io](https://fly.io/) and comes with a GitHub Action that handles automatically deploying the app to production.\n\nPrior to your first deployment, you'll need to do a few things:\n\n- [Install Fly](https://fly.io/docs/getting-started/installing-flyctl/)\n\n- Sign up and log in to Fly\n\n  ```sh\n  fly auth signup\n  ```\n\n  \u003e **Note**: If you have more than one Fly account, ensure that you are signed\n  \u003e into the same account in the Fly CLI as you are in the browser. In your\n  \u003e terminal, run `fly auth whoami` and ensure the email matches the Fly account\n  \u003e signed into the browser.\n\n- Create a new app on Fly:\n\n  ```sh\n  fly apps create [YOUR_APP_NAME]\n  ```\n\n  \u003e **Note**: Make sure this name matches the `app` set in your `fly.toml` file.\n  \u003e Otherwise, you will not be able to deploy.\n\n- Add a `FLY_API_TOKEN` to your GitHub repo. To do this, go to your user\n  settings on Fly and create a new\n  [token](https://web.fly.io/user/personal_access_tokens/new), then add it to\n  [your repo secrets](https://docs.github.com/en/actions/security-guides/encrypted-secrets)\n  with the name `FLY_API_TOKEN`.\n\n- Add your environment vacriables to your fly app secrets, to do this you can run the following commands:\n\n  ```sh\n  fly secrets set DATABASE_URL=\"postgresql://\" SESSION_SECRET=$(openssl rand -hex 32) [additional secrets] --app [YOUR_APP_NAME]\n  ```\n\n  If you don't have openssl installed, you can also use\n  [1Password](https://1password.com/password-generator) to generate a random\n  secret, just replace `$(openssl rand -hex 32)` with the generated secret.\n\nNow that everything is set up you can commit and push your changes to your repo.\nEvery commit to your `main` branch will trigger a deployment to your production\nenvironment.\n\n## 📝 License\n\nCopyright © 2023 [Tabnine](https://tabnine.com). \u003cbr /\u003e\nThis project is [MIT](./LICENSE) licensed.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faydrian%2Ftabnine-charity-activations","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faydrian%2Ftabnine-charity-activations","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faydrian%2Ftabnine-charity-activations/lists"}