{"id":23687907,"url":"https://github.com/stophecom/scrt-link-v2","last_synced_at":"2026-01-11T11:30:15.106Z","repository":{"id":269846122,"uuid":"908585036","full_name":"stophecom/scrt-link-v2","owner":"stophecom","description":null,"archived":false,"fork":false,"pushed_at":"2025-02-14T21:29:21.000Z","size":980,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-14T21:31:03.987Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://scrt-link-v2.vercel.app","language":"Svelte","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/stophecom.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":"2024-12-26T12:37:58.000Z","updated_at":"2025-02-14T21:29:25.000Z","dependencies_parsed_at":"2024-12-26T16:21:42.401Z","dependency_job_id":"6babca77-c728-4cb1-b061-44379f51525b","html_url":"https://github.com/stophecom/scrt-link-v2","commit_stats":null,"previous_names":["stophecom/scrt-link-v2"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stophecom%2Fscrt-link-v2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stophecom%2Fscrt-link-v2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stophecom%2Fscrt-link-v2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stophecom%2Fscrt-link-v2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stophecom","download_url":"https://codeload.github.com/stophecom/scrt-link-v2/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239748247,"owners_count":19690232,"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":[],"created_at":"2024-12-29T23:58:36.461Z","updated_at":"2026-01-11T11:30:15.057Z","avatar_url":"https://github.com/stophecom.png","language":"Svelte","funding_links":[],"categories":["Svelte"],"sub_categories":[],"readme":"# scrt-link-v2\n\nVersion 2 - built with [Svelte](https://github.com/sveltejs/cli).\n\nLive: [v2.scrt.link](v2.scrt.link)\n\n\u003e [!WARNING]  \n\u003e This is work-in-progress.\n\n## Developing\n\n```bash\n\n# 1. Install dependencies\npnpm install\n\n# 2. Start DB (via Docker)\npnpm run db:start\n\n# 3. Start sveltekit\npnpm run dev\n\n# Run tests (unit and e2e)\npnpm test\n```\n\n## Database\n\nUsing Drizzle with Postgres.\nRuns in Docker locally.\n\n```bash\n# You will need to set POSTGRES_URL in your production environment\n# Reminder to myself: Using 5433 as port to not have conflict with local Postgres: https://stackoverflow.com/a/76448218\n\npnpm run db:start  # Start the docker container\npnpm run db:push # Update your database schema\n\n# Local DB with Docker\ndocker compose up\n\n```\n\n## Building\n\nTo create a production version of your app:\n\n```bash\npnpm run build\n```\n\n## Cron\n\nWe use Vercel Cron to cleanup secrets and files.\nSee `src/routes/api/v1/cron/+server.ts` for more info.\n\nYou can trigger the cron job locally with:\n\n```bash\ncurl --request POST \\\n     --url 'http://localhost:5173/api/v1/cron' \\\n     --header 'Authorization: Bearer API_SECRET_KEY'\n\n```\n\n## UI / Components\n\nhttps://www.shadcn-svelte.com/\n\n```bash\n# Install component (e.g. form)\npnpm dlx shadcn-svelte@latest add form\n```\n\n## Translations / i18n\n\nTranslations are done with [Paraglide.js by Inlang](https://inlang.com/m/gerre34r/library-inlang-paraglideJs)\n\n```bash\n# Edit your messages in messages/en.json\n# Consider installing the Sherlock IDE Extension\n# Visit /demo/paraglide route to view the demo\npnpm inlang:machine-translate # Machine translate missing keys\npnpm inlang:lint\npnpm inlang:editor # Opens visual editor\n```\n\n## Authentication\n\nImplementation based on [Lucia](https://v2.lucia-auth.com/database-adapters/postgres/)\n\nThe following login methods are available:\n\n- Email \u0026 Password (with email verification \u0026 password reset)\n- OAuth with Google\n\n### Google OAuth Client\n\nRedirect URI: `/login/google/callback`\n\n## Transactional Emails\n\n- Delivered via [resend](https://resend.com/)\n- Email templates with [svelte-email-tailwind](https://github.com/steveninety/svelte-email-tailwind)\n- Structure:\n\n```bash\n📦 Project\n├── 📂 src\n│ └── 📂 lib\n│   └── 📂 emails # Email templates\n│\n├── 📂 routes\n│ └── 📂 admin\n│   └── 📂 email-previews # Preview emails (Only works on localhost )\n│\n└── 📜 vite.config.ts # Tailwind setup\n```\n\n## Workflows / E2E Testing\n\nIn order to ship with confidence we run a set of tests during and after the deployment.\nSee `playwright-tests-published.yml` for more info.\n\n## Stack\n\n- SvelteKit\n- Tailwind CSS\n- PostgreSQL (Database)\n- Drizzle (ORM)\n- Inlang/Paraglide (i18n)\n\n## Infrastructure\n\n- Website and Postgres on [Vercel](https://vercel.com)\n- S3 Object Storage with [flow.swiss](https://flow.swiss)\n- Emails with [Resend](https://resend.com)\n\n## License\n\n[MIT](https://opensource.org/license/mit/) (Code)\n\n[CC BY-NC-ND](https://creativecommons.org/licenses/by-nc-nd/4.0/) (Creatives)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstophecom%2Fscrt-link-v2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstophecom%2Fscrt-link-v2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstophecom%2Fscrt-link-v2/lists"}