{"id":14968877,"url":"https://github.com/levinigor/vue-supabase-chat","last_synced_at":"2025-10-26T05:30:55.024Z","repository":{"id":222515903,"uuid":"757491970","full_name":"LevinIgor/vue-supabase-chat","owner":"LevinIgor","description":"Vue.js + Supabase. Realtime chat website. Pet project for beginner, Full stack project, Vercel deploy","archived":false,"fork":false,"pushed_at":"2024-03-13T17:44:40.000Z","size":192,"stargazers_count":21,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-31T15:53:28.685Z","etag":null,"topics":["chat","chat-room","pet-project","supabase","supabase-db","supabase-js","supabase-storage","tailwind","tailwind-css","tailwind-template","tailwindcss","vue","vue3","vuejs"],"latest_commit_sha":null,"homepage":"https://vue-chat-lovat.vercel.app","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LevinIgor.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2024-02-14T15:54:39.000Z","updated_at":"2024-12-24T22:24:55.000Z","dependencies_parsed_at":"2024-02-22T16:35:43.947Z","dependency_job_id":null,"html_url":"https://github.com/LevinIgor/vue-supabase-chat","commit_stats":null,"previous_names":["levinigor/vuechat","levinigor/vue-supabase-chat"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LevinIgor%2Fvue-supabase-chat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LevinIgor%2Fvue-supabase-chat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LevinIgor%2Fvue-supabase-chat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LevinIgor%2Fvue-supabase-chat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LevinIgor","download_url":"https://codeload.github.com/LevinIgor/vue-supabase-chat/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238264709,"owners_count":19443397,"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":["chat","chat-room","pet-project","supabase","supabase-db","supabase-js","supabase-storage","tailwind","tailwind-css","tailwind-template","tailwindcss","vue","vue3","vuejs"],"created_at":"2024-09-24T13:40:44.848Z","updated_at":"2025-10-26T05:30:49.704Z","avatar_url":"https://github.com/LevinIgor.png","language":"Vue","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Full-stack real-time chat\n\n- Data: PostgeSQL managed by Supabase @supabase_io (awesome real-time API).\n- Front-end: Vue.js + Vite\n- UI library: Tailwind\n- Hosting: Vercel\n- Country flags from vue-country-flag-next\n\n## Install\n**npm install** to setup dependencies\n\n## Supabase\nCreate Supabase project https://supabase.com/dashboard/projects\nURL and KEY take from Project -\u003e \"Project Settings\" -\u003e\u003e \"API\"\n\n\n![image](https://cincccptobelmodposou.supabase.co/storage/v1/object/public/service/hkhkjhkj.jpg)\n\n\n## Supabase variables\nCreate a .env or .env.local (git not init this file) file with\n- VITE_SUPABASE_URL \n- VITE_SUPABASE_KEY\n\nIf you use VITE, Use only VITE_*** prefix !\n\n\n![image](https://cincccptobelmodposou.supabase.co/storage/v1/object/public/service/Screenshot%202024-03-13%20192130.png)\n\n\n## Setup your Supabase project\nThe following database table is required:\n\n![image](https://cincccptobelmodposou.supabase.co/storage/v1/object/public/service/Screenshot%202024-03-13%20191338.png)\n\n\n### Turn on realtime mode on message table:\n\n\n![image](https://cincccptobelmodposou.supabase.co/storage/v1/object/public/service/Screenshot%202024-03-13%20192913.png)\n\n\n### Create two policy:\n- All users can insert in table\n- All users can read from table\n\n\n![image](https://cincccptobelmodposou.supabase.co/storage/v1/object/public/service/Screenshot%202024-03-13%20193101.png)\n![image](https://cincccptobelmodposou.supabase.co/storage/v1/object/public/service/Screenshot%202024-03-13%20193341.png)\n\n\n### Create two function:\n- get_country_count\n- get_counts\n\n``` sql\ncreate or replace function get_country_count ()\n  returns table (country text, name text, record_count bigint) as $$\nBEGIN\n  RETURN QUERY\nselect\n  location -\u003e 'country' -\u003e\u003e 'iso_code' as country,\n  location -\u003e 'country' -\u003e\u003e 'name' as name,\n  count(*) as record_count\nfrom\n  users\ngroup by\n  country, name;\nEND;\n$$ language plpgsql;\n```\n\n``` sql\ncreate or replace function get_counts ()\n  returns table (viewers bigint, message_count bigint) as $$\nBEGIN\n  RETURN QUERY\nSELECT\n  COUNT(DISTINCT location-\u003e\u003e'ip') AS viewers, COUNT(*) AS message_count\nFROM public.message;\nEND;\n$$ language plpgsql;\n```\n\n![image](https://cincccptobelmodposou.supabase.co/storage/v1/object/public/service/Screenshot%202024-03-13%20194208.png)\n## Follow instruction here\n\n### Dev\n**npm run dev** to run server on port 3000\n\n### Build\n**npm run build** to build the react client\n\n### Demo\n**https://vue-chat-lovat.vercel.app/**\n\n![image](https://cincccptobelmodposou.supabase.co/storage/v1/object/public/service/Screenshot%202024-03-13%20192655.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flevinigor%2Fvue-supabase-chat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flevinigor%2Fvue-supabase-chat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flevinigor%2Fvue-supabase-chat/lists"}