All Projects → amand33p → les-chat

amand33p / les-chat

Licence: MIT license
Real-time messenger with private, public & group chat. Made using PERN + GraphQL stack.

Programming Languages

javascript
184084 projects - #8 most used programming language
HTML
75241 projects
CSS
56736 projects

Projects that are alternatives of or similar to les-chat

Chatty
A WhatsApp clone with React Native and Apollo (Tutorial)
Stars: ✭ 481 (+902.08%)
Mutual labels:  apollo, apollo-client, apollo-server
kontent-boilerplate-express-apollo
Kontent Boilerplate for development of Express application using Apollo server and GraphQL.
Stars: ✭ 21 (-56.25%)
Mutual labels:  apollo, apollo-client, apollo-server
Awesome Apollo Graphql
A curated list of amazingly awesome things regarding Apollo GraphQL ecosystem 🌟
Stars: ✭ 126 (+162.5%)
Mutual labels:  apollo, apollo-client, apollo-server
now-course
Proyecto para el curso de Now.sh en Platzi
Stars: ✭ 19 (-60.42%)
Mutual labels:  apollo, apollo-client, apollo-server
bookshelf
My GraphQL playground
Stars: ✭ 64 (+33.33%)
Mutual labels:  apollo, apollo-client, apollo-server
Heighliner
A GraphQL Server for NewSpring Web
Stars: ✭ 13 (-72.92%)
Mutual labels:  apollo, apollo-server
jest-gql
✅🚀GraphQL based tests for Jest and Apollo
Stars: ✭ 33 (-31.25%)
Mutual labels:  apollo, apollo-client
gitstar
Github Client built with React Apollo
Stars: ✭ 15 (-68.75%)
Mutual labels:  apollo, apollo-client
apollo-express-ts-server-boilerplate
No description or website provided.
Stars: ✭ 29 (-39.58%)
Mutual labels:  apollo, apollo-server
Todo-apollo-redux-react-native
Todo App with apollo + redux + react-native
Stars: ✭ 15 (-68.75%)
Mutual labels:  apollo, apollo-server
agollo
🚀Go client for ctrip/apollo (https://github.com/apolloconfig/apollo)
Stars: ✭ 563 (+1072.92%)
Mutual labels:  apollo, apollo-client
graphql-workshop
⚒ 🚧 A GraphQL workshop to learn GraphQL implementations
Stars: ✭ 20 (-58.33%)
Mutual labels:  apollo, apollo-client
RxApolloClient
RxSwift extensions for Apollo Client
Stars: ✭ 46 (-4.17%)
Mutual labels:  apollo, apollo-client
apollo-cache-instorage
Apollo Cache implementation that facilitates locally storing resources
Stars: ✭ 98 (+104.17%)
Mutual labels:  apollo, apollo-client
laika
Log, test, intercept and modify Apollo Client's operations
Stars: ✭ 99 (+106.25%)
Mutual labels:  apollo, apollo-client
apollo-log
A logging extension for the Apollo GraphQL Server
Stars: ✭ 64 (+33.33%)
Mutual labels:  apollo, apollo-server
spiced-final-project
Career explorer platform developed in React.js in 6 days.
Stars: ✭ 14 (-70.83%)
Mutual labels:  socket-io, messenger
react-apollo-graphql
Get rid of decorators and use Apollo GraphQL queries and mutations in the simple and readable way.
Stars: ✭ 16 (-66.67%)
Mutual labels:  apollo, apollo-client
apollo-resolvers
Expressive and composable resolvers for Apollostack's GraphQL server
Stars: ✭ 434 (+804.17%)
Mutual labels:  apollo-client, apollo-server
apollo-local-query
Simpler server rendering with apollo-client 1.x, using a local GraphQL networkInterface
Stars: ✭ 66 (+37.5%)
Mutual labels:  apollo, apollo-client

LesChat! | Real-time messenger | PERN-GraphQL

Real-time chat app made with PERN + GraphQL - features private, global & group messaging

Demo

Deployed on Netlify (front-end) & Heroku (back-end)

Built using

Front-end

Back-end

  • Node.js - Runtime environment for JS
  • Apollo Server - To build a self-documenting GraphQL API server
  • Apollo Subscriptions - Subscriptions are GraphQL operations that watch events emitted from Apollo Server.
  • PostgreSQL - Opens-source SQL database to store data
  • Sequelize - NodeJS ORM for SQL-based databases
  • JSON Web Token - A standard to secure/authenticate HTTP requests
  • Bcrypt.js - For hashing passwords
  • Dotenv - To load environment variables from a .env file

Features

  • Authentication (login/register w/ username & password)
  • Real-time chat using web-sockets
  • Private messaging with all registered users
  • Global channel for all-users-at-one-place chat
  • Creation of groups with users of choice
  • Users can leave from group after getting added
  • Group creator can add/remove members from group
  • Group creator can delete the group, & its messages along with it
  • Group creator can rename the said group's name
  • Error management with descriptive messages
  • Toast notifications for actions: creating groups, removing users etc.
  • Loading spinners for relevant fetching processes
  • Formatted dates for adding/updating questions/answers/comments
  • Dark mode toggle w/ local storage save
  • Proper responsive UI for all screens

Screenshots

Desktop/Tablet

Desktop-1 Desktop-2 Desktop-3 Desktop-4

Mobile

Mobile-1 Mobile-2 Mobile-3 Mobile-4 Mobile-5

Usage

Env variable:

Create a .env file in server directory and add the following:

PORT = 4000
JWT_SECRET = "Your JWT secret"

Client:

Open client/src/backendUrls.js & change the "backendUrls" object to:

{
  http: "http://localhost:4000",
  ws: "ws://localhost:4000/graphql"
}

Run client development server:

cd client
npm install
npm start

Server:

Open server/config/config.json & update the development keys' values to match your local PostgreSQL credentials.

Install 'sequelize-cli' & 'nodemon' as global packages, if you haven't yet.

Run this command to migrate the SQL table to your own local PSQL: sequelize db:migrate

Run backend development server:

cd server
npm install
npm run dev
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].