A monorepo containing the frontend and backend for the Kekat, a real time chat app written in TypeScript and powered by GraphQL.
Still a huge work in progress. Contact me if you want to be involved or scold at my codes.
- Fully written in TypeScript! 👓
- GraphQL API 🚀: Build in Apollo-server with Express
- Real-Time Subscriptions: Uses Websockets to allow real-time interactions with the API.
- Authentication 🔑: Make use of Session and JWT to authenticate Users
- Transactional Emails ✉️: Nodemailer and SendGrid is used to send emails on events (confirmation, lost password, etc)
Make sure you have the following installed globally:
- Yarn classic (1.x)
- Lerna
- PostgreSQL
- Redis
Also install http-server globally to start the frontend in a local server
Get the official Redis windows port here
Get the Redis port for Windows maintained here
Clone this repo first
git clone https://github.com/terzhang/kekat-mono.git
install the dependencies
yarn
yarn run start
use
start:client
orstart:server
to start each separately
This will enable hot module replacement
yarn run dev
use
dev:client
ordev:server
to start each separately
Now you can visit http://localhost:8888 to see the App locally
Don't be surprised when the GraphQL schema get modified as a result of code change in the backend.
The backend emits/updates the GraphQL schema whenever it's started.
When you run the dev
or start
script, the project will generate new Typescript typings from the GraphQL Schema located in the typegraphql
package if there were changes made to it.