{"id":26324840,"url":"https://github.com/adrocodes/remix-kinde-turso-template","last_synced_at":"2026-02-05T10:32:03.385Z","repository":{"id":281966903,"uuid":"911934228","full_name":"adrocodes/remix-kinde-turso-template","owner":"adrocodes","description":"Template configured for Remix with Kinde Auth, Turso with Drizzle, and Tailwind","archived":false,"fork":false,"pushed_at":"2025-01-04T08:39:36.000Z","size":70,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-01T13:03:19.781Z","etag":null,"topics":["drizzle-orm","kinde-auth","react","react-router-v7","remix","remix-template","sass-starterkit","tailwindcss","turso","typescript"],"latest_commit_sha":null,"homepage":"","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/adrocodes.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":"2025-01-04T08:30:18.000Z","updated_at":"2025-01-07T09:52:48.000Z","dependencies_parsed_at":"2025-03-12T04:45:39.375Z","dependency_job_id":null,"html_url":"https://github.com/adrocodes/remix-kinde-turso-template","commit_stats":null,"previous_names":["adrocodes/remix-kinde-turso-template"],"tags_count":0,"template":true,"template_full_name":null,"purl":"pkg:github/adrocodes/remix-kinde-turso-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adrocodes%2Fremix-kinde-turso-template","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adrocodes%2Fremix-kinde-turso-template/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adrocodes%2Fremix-kinde-turso-template/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adrocodes%2Fremix-kinde-turso-template/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/adrocodes","download_url":"https://codeload.github.com/adrocodes/remix-kinde-turso-template/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adrocodes%2Fremix-kinde-turso-template/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29119232,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-05T09:40:36.738Z","status":"ssl_error","status_checked_at":"2026-02-05T09:36:49.977Z","response_time":65,"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":["drizzle-orm","kinde-auth","react","react-router-v7","remix","remix-template","sass-starterkit","tailwindcss","turso","typescript"],"created_at":"2025-03-15T18:28:59.536Z","updated_at":"2026-02-05T10:32:03.366Z","avatar_url":"https://github.com/adrocodes.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Remix + Kinde + Turso Template\n\nThis is a [Remix](https://remix.run) project bootstrapped with [`create-react-router`](https://reactrouter.com/start/framework/installation).\n\n## Features\n\n1. Tailwind configured.\n2. Kinde integration.\n3. Drizzle configured with Turso provider.\n4. Kinde `user.created` webhook configured to create a user in the database.\n\n## Environment Variables\n\nCopy the `.env.example` to a `.env.development` file. Your values will be found on the Kinde \u0026 Turso platforms. More information below.\n\n### Drizzle Note\n\nYou want to also copy the Turso specific environment variables to a `.env` file. This is to allow for the various Drizzle commands to work properly.\n\n## Kinde\n\n### Learn more\n\nTo learn more about Kinde, take a look at the following resources:\n\n- [Kinde Documentation](https://docs.kinde.com/developer-tools/sdks/backend/nextjs-sdk/)\n- [Kinde Webhooks](https://docs.kinde.com/integrate/webhooks/webhooks-nextjs/)\n\n### How to configure\n\nWhen creating your project, you'll be presented with your environment values, copy \u0026 paste them into your `.env.development` file.\n\nThe only \"private\" route set up is `/dashboard`. If you want to redirect to this route after a user logs in, make sure you update your `KINDE_POST_LOGIN_REDIRECT_URL` environment variable.\n\n### Webhooks\n\nFor the `user.created` webhook, you'll need to set up [ngrok](https://ngrok.com/) to tunnel your localhost to the internet. You can then use the ngrok URL to set up the webhook on the Kinde platform.\n\n- URL: `{Ngrok URL}/api/v1/kinde/webhook/user.created`\n- Event: `user.created`\n\nIf you update your `User` schema, you might have to update the webhook to populate the data correctly.\n\n### Route protection\n\nA custom Kinde [layout]() has been configured to protect routes using the `protectRoute` utility. You can read about that in the `kinde/ui/protected-layout.tsx` file.\n\n### `getAppUser` helper\n\nThis custom helper combines the `getUser` method from Kinde and a database lookup to get the user from the database. This will add a `turso` object to the user object that will contain Turso user data. Currently only the `id` is added, but you can add more fields if you want.\n\n## Drizzle \u0026 Turso\n\n### Learn more\n\nTo learn more about Drizzle, take a look at the following resources:\n\n- [Drizzle Documentation](https://orm.drizzle.team/docs/overview)\n- [Turso Documentation](https://docs.turso.tech/introduction)\n\n### Schemas\n\nYou can create mutltiple schema files under the `app/models` folder, drizzle is configured to look for these files and create the tables in the database.\n\n### Workflow\n\n1. Create a schema file under `app/models`.\n2. Run `pnpm db:generate` to generate the migration files.\n3. Run `pnpm db:migrate` to run the migrations.\n4. View your database using Drizzle Studio using `pnpm db:studio`.\n\n## Project structure\n\nThe project follows [Module Driven Development](https://papers.adro.codes/module-driven-development) for the project structure, with a couple of modules already set up for the various parts of the template. Modules in this project is under `app/core`.\n\n---\n\n## Bootstrapped README\n\nA modern, production-ready template for building full-stack React applications using React Router.\n\n[![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/remix-run/react-router-templates/tree/main/default)\n\n### Features\n\n- 🚀 Server-side rendering\n- ⚡️ Hot Module Replacement (HMR)\n- 📦 Asset bundling and optimization\n- 🔄 Data loading and mutations\n- 🔒 TypeScript by default\n- 🎉 TailwindCSS for styling\n- 📖 [React Router docs](https://reactrouter.com/)\n\n### Getting Started\n\n#### Installation\n\nInstall the dependencies:\n\n```bash\nnpm install\n```\n\n#### Development\n\nStart the development server with HMR:\n\n```bash\nnpm run dev\n```\n\nYour application will be available at `http://localhost:5173`.\n\n### Building for Production\n\nCreate a production build:\n\n```bash\nnpm run build\n```\n\n### Deployment\n\n#### Docker Deployment\n\nThis template includes three Dockerfiles optimized for different package managers:\n\n- `Dockerfile` - for npm\n- `Dockerfile.pnpm` - for pnpm\n- `Dockerfile.bun` - for bun\n\nTo build and run using Docker:\n\n```bash\n# For npm\ndocker build -t my-app .\n\n# For pnpm\ndocker build -f Dockerfile.pnpm -t my-app .\n\n# For bun\ndocker build -f Dockerfile.bun -t my-app .\n\n# Run the container\ndocker run -p 3000:3000 my-app\n```\n\nThe containerized application can be deployed to any platform that supports Docker, including:\n\n- AWS ECS\n- Google Cloud Run\n- Azure Container Apps\n- Digital Ocean App Platform\n- Fly.io\n- Railway\n\n#### DIY Deployment\n\nIf you're familiar with deploying Node applications, the built-in app server is production-ready.\n\nMake sure to deploy the output of `npm run build`\n\n```\n├── package.json\n├── package-lock.json (or pnpm-lock.yaml, or bun.lockb)\n├── build/\n│   ├── client/    # Static assets\n│   └── server/    # Server-side code\n```\n\n### Styling\n\nThis template comes with [Tailwind CSS](https://tailwindcss.com/) already configured for a simple default starting experience. You can use whatever CSS framework you prefer.\n\n---\n\nBuilt with ❤️ using React Router.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadrocodes%2Fremix-kinde-turso-template","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadrocodes%2Fremix-kinde-turso-template","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadrocodes%2Fremix-kinde-turso-template/lists"}