{"id":15879299,"url":"https://github.com/OpenFrenchFries/supasveltekit","last_synced_at":"2025-10-17T19:31:25.258Z","repository":{"id":190722623,"uuid":"683220455","full_name":"OpenFrenchFries/supasveltekit","owner":"OpenFrenchFries","description":"Where Svelte's elegance meets Supabase's might!","archived":false,"fork":false,"pushed_at":"2024-12-18T15:21:21.000Z","size":1158,"stargazers_count":41,"open_issues_count":1,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-12-18T15:32:48.177Z","etag":null,"topics":["authentication","cloud","database","javascript","opensource","realtime","supabase","svelte","sveltekit","toolkit","typescript"],"latest_commit_sha":null,"homepage":"","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/OpenFrenchFries.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","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-08-25T22:30:49.000Z","updated_at":"2024-12-18T15:21:26.000Z","dependencies_parsed_at":"2024-08-07T15:46:42.850Z","dependency_job_id":"ed10ab61-e522-4e42-a6ca-04d2d20d224b","html_url":"https://github.com/OpenFrenchFries/supasveltekit","commit_stats":{"total_commits":74,"total_committers":4,"mean_commits":18.5,"dds":0.1216216216216216,"last_synced_commit":"8635ebbcb266fafeb28a998a3865f2b149238d5a"},"previous_names":["openfrenchfries/supasvelte","openfrenchfries/supasveltekit"],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenFrenchFries%2Fsupasveltekit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenFrenchFries%2Fsupasveltekit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenFrenchFries%2Fsupasveltekit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenFrenchFries%2Fsupasveltekit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OpenFrenchFries","download_url":"https://codeload.github.com/OpenFrenchFries/supasveltekit/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":236865448,"owners_count":19216943,"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":["authentication","cloud","database","javascript","opensource","realtime","supabase","svelte","sveltekit","toolkit","typescript"],"created_at":"2024-10-06T03:01:37.219Z","updated_at":"2025-10-17T19:31:19.874Z","avatar_url":"https://github.com/OpenFrenchFries.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"# SupaSvelteKit ⚡\n\n\u003e 🌟 Where Svelte's elegance meets Supabase's might! 🌟\n\nSupaSvelteKit is a library designed to seamlessly integrate SvelteKit with Supabase, providing developers with a powerful toolkit to build dynamic web applications.\n\n## 🎉 Features\n\n- **Authentication** 🔐: Easily integrate Supabase authentication with SvelteKit.\n- **Realtime** ⏱️: Simplified multi-user realtime updates with Svelte stores.\n- **Storage** 📦: Manage your Supabase storage with Svelte components.\n- ... and more to come! Stay tuned and feel free to suggest or contribute new features!\n\n## 🛠 Installation\n\n```bash\nnpm install supasveltekit\n```\n\n## 🚀 Quick Start\n\n1. Initialize your Supabase client:  \n```src/lib/supabase.ts```\n```ts\nimport { PUBLIC_SUPABASE_KEY, PUBLIC_SUPABASE_URL } from '$env/static/public';\nimport { createClient } from '@supabase/supabase-js';\n\nexport const supabaseUrl = PUBLIC_SUPABASE_URL;\nexport const supabaseKey = PUBLIC_SUPABASE_KEY;\n\nexport const supabase = createClient(supabaseUrl, supabaseKey);\n```\n\n2. Use SupaSvelteKit components in your SvelteKit app:  \n```src/routes/+page.svelte```\n```svelte\n\u003cscript lang=\"ts\"\u003e\n\timport { supabase } from '$lib/supabase';\n\timport { SupabaseApp, Authenticated, Unauthenticated, RealtimePresence, BucketFilesList } from 'supasveltekit';\n\u003c/script\u003e\n\n\u003cSupabaseApp {supabase}\u003e\n\t\u003cAuthenticated let:session let:signOut\u003e\n\t\t\u003ch1\u003eWelcome, {session?.user?.identities?.[0]?.identity_data?.email}!\u003c/h1\u003e\n\t\t\u003cbutton on:click={() =\u003e signOut()}\u003eSign Out\u003c/button\u003e\n\n\t\t\u003cBucketFilesList bucketName=\"test-bucket\" path=\"public/\" let:bucketFiles let:error\u003e\n\t\t\t{#if error !== null}\n\t\t\t\t\u003cdiv\u003e{error}\u003c/div\u003e\n\t\t\t{/if}\n\t\t\t\u003cul\u003e\n\t\t\t\t{#each bucketFiles as file}\n\t\t\t\t\t\u003cli\u003e\n\t\t\t\t\t\t{file.name}\n\t\t\t\t\t\u003c/li\u003e\n\t\t\t\t{/each}\n\t\t\t\u003c/ul\u003e\n\t\t\u003c/BucketFilesList\u003e\n\n\t\t\u003cRealtimePresence channelName=\"my-channel\"\u003e\n\t\t\t\u003cdiv slot=\"default\" let:state let:error let:realtime let:channel let:updateStatus\u003e\n\t\t\t\t{#if error}\n\t\t\t\t\t\u003cp\u003eError: {error.message}\u003c/p\u003e\n\t\t\t\t{:else if !state}\n\t\t\t\t\t\u003cp\u003eLoading...\u003c/p\u003e\n\t\t\t\t{:else}\n\t\t\t\t\t\u003cp\u003eConnected to channel {channel?.name}\u003c/p\u003e\n\t\t\t\t\t\u003cp\u003eNumber of users: {state?.count}\u003c/p\u003e\n\t\t\t\t\t\u003cbutton on:click={() =\u003e updateStatus({ status: 'online' })}\u003eGo online\u003c/button\u003e\n\t\t\t\t\t\u003cbutton on:click={() =\u003e updateStatus({ status: 'offline' })}\u003eGo offline\u003c/button\u003e\n\t\t\t\t{/if}\n\t\t\t\u003c/div\u003e\n\t\t\u003c/RealtimePresence\u003e\n\t\u003c/Authenticated\u003e\n\n\t\u003cUnauthenticated\u003e\n\t\t\u003ch1\u003eSign in to continue\u003c/h1\u003e\n\t\t\u003cbutton on:click={() =\u003e signIn()}\u003eSign In\u003c/button\u003e\n\t\u003c/Unauthenticated\u003e\n\u003c/SupabaseApp\u003e\n```\n\n## 📚 Documentation\n\nFor detailed documentation, usage guides, and API references, dive into [our documentation site](http://SupaSvelteKit.openfrenchfries.com/).\n\n## 📖 Examples\n\nExplore hands-on examples to get a feel for how SupaSvelteKit enhances your projects:\n\n- [Basic Todo App](https://github.com/OpenFrenchFries/supasveltekit-example-todo)\n- [Authentication Demo](https://github.com/orgs/OpenFrenchFries/repositories)\n- ... and more examples coming soon! If you've built something cool with SupaSvelteKit, let us know!\n\n## 💪 Contributing\n\nJoin the SupaSvelteKit journey! 🌍 Whether you're fixing bugs, suggesting enhancements, or enriching the documentation, every contribution counts. Dive into our [CONTRIBUTING.md](.github/CONTRIBUTING.md) to get started.\n\n## 📜 License\n\nFreedom with responsibility! SupaSvelteKit is [MIT licensed](LICENSE), ensuring open use with acknowledgment.\n\n## 🙌 Acknowledgements\n\nA big shoutout 📣:\n\n- To the Svelte and Supabase communities for lighting the way with invaluable resources and support.\n- To every coder, contributor, and coffee mug that's been part of this journey. ☕\n\n---\n\nCrafted with 🧡 by [OpenFrenchFries](https://github.com/OpenFrenchFries) and the amazing contributors. [Join us!](.github/CONTRIBUTING.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FOpenFrenchFries%2Fsupasveltekit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FOpenFrenchFries%2Fsupasveltekit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FOpenFrenchFries%2Fsupasveltekit/lists"}