{"id":21706888,"url":"https://github.com/yaroslavchuiko/glassychat","last_synced_at":"2025-04-12T16:15:41.272Z","repository":{"id":233244982,"uuid":"671924456","full_name":"YaroslavChuiko/GlassyChat","owner":"YaroslavChuiko","description":"💎💬 A realtime chat appilication built with using serverless tecknologes such as Pusher and PlanetScale.","archived":false,"fork":false,"pushed_at":"2023-09-21T14:39:33.000Z","size":630,"stargazers_count":7,"open_issues_count":3,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-26T10:47:56.288Z","etag":null,"topics":["chat","nextauth","nextjs","pages-router","planetscale","prisma","pusher","pwa","radix-ui","react","reactquery","serverless","t3-stack","tailwindcss","trpc","typescript","zod","zustand"],"latest_commit_sha":null,"homepage":"https://glassy-chat.vercel.app","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/YaroslavChuiko.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}},"created_at":"2023-07-28T13:08:14.000Z","updated_at":"2024-10-11T10:09:31.000Z","dependencies_parsed_at":"2024-04-15T05:45:18.724Z","dependency_job_id":"31bcbbcd-a267-43b1-ab08-c6100909be8b","html_url":"https://github.com/YaroslavChuiko/GlassyChat","commit_stats":null,"previous_names":["yaroslavchuiko/glassychat"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YaroslavChuiko%2FGlassyChat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YaroslavChuiko%2FGlassyChat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YaroslavChuiko%2FGlassyChat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YaroslavChuiko%2FGlassyChat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/YaroslavChuiko","download_url":"https://codeload.github.com/YaroslavChuiko/GlassyChat/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248594190,"owners_count":21130316,"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","nextauth","nextjs","pages-router","planetscale","prisma","pusher","pwa","radix-ui","react","reactquery","serverless","t3-stack","tailwindcss","trpc","typescript","zod","zustand"],"created_at":"2024-11-25T22:14:44.447Z","updated_at":"2025-04-12T16:15:41.241Z","avatar_url":"https://github.com/YaroslavChuiko.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003chead\u003e\n    \u003cdiv align=\"center\"\u003e\n        \u003ch1 align=\"center\"\u003eGlassy Chat\u003c/h1\u003e\n    \u003c/div\u003e\n\u003c/head\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg alt=\"nextdotjs\" src=\"https://img.shields.io/badge/-next.js-000000.svg?style=for-the-badge\u0026logo=nextdotjs\u0026logoColor=white\" /\u003e\n  \u003cimg alt=\"TypeScript\" src=\"https://img.shields.io/badge/-TypeScript-3178C6.svg?style=for-the-badge\u0026logo=TypeScript\u0026logoColor=white\" /\u003e\n  \u003cimg alt=\"react\" src=\"https://img.shields.io/badge/-React-61DAFB.svg?style=for-the-badge\u0026logo=react\u0026logoColor=black\" /\u003e\n  \u003cimg alt=\"trpc\" src=\"https://img.shields.io/badge/-trpc-2596BE.svg?style=for-the-badge\u0026logo=trpc\u0026logoColor=white\" /\u003e\n  \u003cimg alt=\"zod\" src=\"https://img.shields.io/badge/-zod-3E67B1.svg?style=for-the-badge\u0026logo=zod\u0026logoColor=white\" /\u003e\n  \u003cimg alt=\"reactquery\" src=\"https://img.shields.io/badge/-react%20query-FF4154.svg?style=for-the-badge\u0026logo=reactquery\u0026logoColor=white\" /\u003e\n  \u003cimg alt=\"nextauth\" src=\"https://img.shields.io/badge/-nextauth.js-000000.svg?style=for-the-badge\u0026logo=nextdotjs\u0026logoColor=white\" /\u003e\n  \u003cimg alt=\"zustand\" src=\"https://img.shields.io/badge/-zustand-252b37.svg?style=for-the-badge\u0026logo=react\u0026logoColor=white\" /\u003e\n  \u003cimg alt=\"radixui\" src=\"https://img.shields.io/badge/-radix%20UI-161618.svg?style=for-the-badge\u0026logo=radixui\u0026logoColor=white\" /\u003e\n  \u003cimg alt=\"tailwindcss\" src=\"https://img.shields.io/badge/-tailwind%20CSS-4285F4.svg?style=for-the-badge\u0026logo=tailwindcss\u0026logoColor=white\" /\u003e\n  \u003cimg alt=\"pusher\" src=\"https://img.shields.io/badge/-pusher-300D4F.svg?style=for-the-badge\u0026logo=pusher\u0026logoColor=white\" /\u003e\n  \u003cimg alt=\"planetscale\" src=\"https://img.shields.io/badge/-planetscale-000000.svg?style=for-the-badge\u0026logo=planetscale\u0026logoColor=white\" /\u003e\n  \u003cimg alt=\"Prisma\" src=\"https://img.shields.io/badge/-Prisma-2D3748.svg?style=for-the-badge\u0026logo=prisma\u0026logoColor=white\" /\u003e\n  \u003cimg alt=\"mysql\" src=\"https://img.shields.io/badge/-mysql-4479A1.svg?style=for-the-badge\u0026logo=mysql\u0026logoColor=white\" /\u003e\n  \u003cimg alt=\"pwa\" src=\"https://img.shields.io/badge/-pwa-5A0FC8.svg?style=for-the-badge\u0026logo=pwa\u0026logoColor=white\" /\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch3\u003eA simple serverless chat.\u003c/h3\u003e    \n\u003c!--   \u003cp\u003e\u003ca href=\"https://youtu.be/zDJ3vSZpoSA\" target=\"_blank\"\u003eDemo video\u003c/a\u003e\u003c/p\u003e --\u003e\n  \u003cp\u003e\u003ca href=\"https://glassy-chat.vercel.app/\" target=\"_blank\"\u003eWebsite\u003c/a\u003e\u003c/p\u003e\n\u003c/div\u003e\n\n\u003cbr/\u003e\n\n## About\n\nThis is a [T3 Stack](https://create.t3.gg/) project bootstrapped with `create-t3-app`.\n\nA chat application, written in Next.js, with the use of tRPC, Zustand, Radix UI, Tailwind CSS, Pusher, Prisma.\n\n## Setup \u0026 Run\n\nPrior to setup, create an `.env` file based on the `.env.example`.\nThen proceed:\n\n1. `npm install`\n2. Create [PlanetScale](https://planetscale.com/) MySQL database and add [connection string](https://planetscale.com/docs/concepts/connection-strings) as value for `DATABASE_URL`\n3. `npx prisma db push`\n4. Generate a secret value for `NEXTAUTH_SECRET`. You can generate a new secret on the command line with: `openssl rand -base64 32`\n5. Create a [Discord OAuth App](https://create.t3.gg/en/usage/next-auth#setting-up-the-default-discordprovider) and add values for `DISCORD_CLIENT_ID` and `DISCORD_CLIENT_SECRET`\n6. Create a [GitHub OAuth App](https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/creating-an-oauth-app). Make sure to set Authorization callback URL to http://localhost:3000/api/auth/callback/github. After that add values for `GITHUB_CLIENT_ID` and `GITHUB_CLIENT_SECRET`\n7. Create [Pusher account](https://pusher.com/) and add values for `PUSHER_APP_ID`, `PUSHER_APP_KEY`, `PUSHER_APP_SECRET`, `PUSHER_APP_CLUSTER`, `NEXT_PUBLIC_PUSHER_APP_KEY`, `NEXT_PUBLIC_PUSHER_APP_CLUSTER`\n8. Add values for `SUPER_ADMIN_NAME` and `SUPER_ADMIN_EMAIL`\n9. `npx prisma db seed`\n10. `npm run dev`\n\n## Snapshots\n\n### Sign in\n\n![image](https://github.com/YaroslavChuiko/GlassyChat/assets/32570823/42fcbc77-cadb-4d88-94c0-a10716dcfa18)\n\n### Chat\n\n![image](https://github.com/YaroslavChuiko/GlassyChat/assets/32570823/552772cd-0560-4b37-958d-a2d88fc43ccd)\n\n![image](https://github.com/YaroslavChuiko/GlassyChat/assets/32570823/9f4ce352-721f-4f7b-acb2-8671fcb7fecd)\n\n![image](https://github.com/YaroslavChuiko/GlassyChat/assets/32570823/a99f81e5-0004-42af-81fa-1bbac146f923)\n\n![image](https://github.com/YaroslavChuiko/GlassyChat/assets/32570823/608f4ae4-bdac-4b46-918a-9d19ed5f41c4)\n\n![image](https://github.com/YaroslavChuiko/GlassyChat/assets/32570823/545abf55-9b35-40b8-bcf7-8239a3b9a663)\n\n![image](https://github.com/YaroslavChuiko/GlassyChat/assets/32570823/dcc631df-0baf-4a08-afd6-b53e4ba5822c)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyaroslavchuiko%2Fglassychat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyaroslavchuiko%2Fglassychat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyaroslavchuiko%2Fglassychat/lists"}