{"id":50598740,"url":"https://github.com/kieran-lawrence/quill","last_synced_at":"2026-06-05T16:30:47.571Z","repository":{"id":262034758,"uuid":"869253917","full_name":"kieran-lawrence/quill","owner":"kieran-lawrence","description":"A real-time chat application built with Next.js on the frontend and NestJS on the backend, using WebSockets for truly instant messaging.","archived":false,"fork":false,"pushed_at":"2026-03-08T02:44:57.000Z","size":4103,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-03-08T07:41:48.786Z","etag":null,"topics":["nestjs","nextjs","postgresql","websockets"],"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/kieran-lawrence.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-10-08T01:43:02.000Z","updated_at":"2026-03-08T02:45:00.000Z","dependencies_parsed_at":"2024-12-09T04:18:05.247Z","dependency_job_id":"9b331c32-9931-46d7-b037-56f477305f4d","html_url":"https://github.com/kieran-lawrence/quill","commit_stats":null,"previous_names":["kieran-lawrence/quill"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/kieran-lawrence/quill","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kieran-lawrence%2Fquill","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kieran-lawrence%2Fquill/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kieran-lawrence%2Fquill/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kieran-lawrence%2Fquill/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kieran-lawrence","download_url":"https://codeload.github.com/kieran-lawrence/quill/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kieran-lawrence%2Fquill/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33951155,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-05T02:00:06.157Z","response_time":120,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["nestjs","nextjs","postgresql","websockets"],"created_at":"2026-06-05T16:30:44.842Z","updated_at":"2026-06-05T16:30:47.560Z","avatar_url":"https://github.com/kieran-lawrence.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🪶 Quill 🪶\n\nQuill is a full stack real-time chat application I have built for fun and to further my TypeScript abilities.\nThe backend is running NestJS with TypeORM for the database. It has all the essential stuff working like real time messages, personalisation, group and private messaging.\n\nThe base application is done, and you can clone this repo and get it running locally by following the below instructions. I have some stretch goals I hope to be able to implement in the future as I get time outside of work which are:\n\n- Audio/Video calling using WebRTC (in progress)\n\n\u003cfigure\u003e\n  \u003cimg src=\"https://preview.redd.it/pleasestop-v0-txr7gptyv1ad1.jpeg?width=1080\u0026crop=smart\u0026auto=webp\u0026s=abbfa10a91eb5c9d099c3128320fa150e7c4078c\" alt=\"Big Plans.\" style=\"width:50%\"\u003e\n  \u003cfigcaption\u003e\u003e me thinking about all the things I want to do in this project \u003c/figcaption\u003e\n\u003c/figure\u003e\n\n### Apps and Packages\n\n```shell\n.\n├── apps\n│   ├── api                       # Backend / API (NestJS app)\n│   └── web                       # Frontend (Next.js app)\n└── packages\n    ├── @repo/api                 # Shared types, and NestJS DTOs/entities\n    ├── @repo/eslint-config       # `eslint` configurations (includes `prettier`)\n    ├── @repo/jest-config         # `jest` configurations\n    ├── @repo/typescript-config   # `tsconfig.json`s used throughout the app\n```\n\n## Project Configuration\n\nThere are a few pre-requisites you will need before starting in order for the project to build successfully:\n\n1. **Yarn:** This project is using yarn, so if you wish to use another package manager you will need to update the scripts in `package.json`\n2. **Postgres:** If you wish to use another db type, such as mysql, you will need to update `/apps/api/src/app.module.ts`\n3. Create a `.env` file in `/apps/api` and populate it with the following\n\n```sh\nPORT=value_goes_here # The port the express server will run on\nCOOKIE_SECRET=value_goes_here # A good secret for session serialisation\nCOOKIE_MAX_AGE=86400000  # 24 Hours (Adjust as desired for a longer session time)\nSESSION_NAME=quill_sessionID # Change if desired\nDB_HOST=value_goes_here # Probably localhost, but depends on your configuration\nDB_PORT=value_goes_here # Port for your database provider, mine is running in a docker container\nDB_USERNAME=username # Your postgres user creds\nDB_PASSWORD=password # Your postgres user creds\nDB_NAME=quill # Change if desired\nFILE_UPLOAD_DESTINATION= # The path where you want uploaded files to go, eg ~/User/{path_to_repo}/quill/assets/images\n```\n\n4. Create a `.env.local` file in `/apps/web` and populate it with the following:\n\n```sh\nNEXT_PUBLIC_SOCKET_URI= Url the backend is running on, probably http://localhost:3001\n```\n\n5. Create a database with the name you specified in `DB_NAME`\n6. Run `yarn` to install all dependencies\n\n## Running Quill\n\nOnce you've finished setting up, you can run it with the following commands:\n\n```sh\nyarn dev # Starts both the front and backend using Turbo\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkieran-lawrence%2Fquill","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkieran-lawrence%2Fquill","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkieran-lawrence%2Fquill/lists"}