Slack-type chat app with fully built back-end.
Developed as a way to learn and practice the MERN stack, with a focus on Express and MongoDB.
Authentication: User sign up, log in, , log out, forgot password/reset password by email.
Chat features: Room chat, direct friend chat, edit user profile: name, email, password, avatar, delete account.
UX: Server-side rendered (SSR), responsive design, data security.
Feel free to test the app by signing up, leave a few messages, edit your user profile.
- MongoDB - Database
- Express - Server Framework
- React - Web Framework
- NodeJs - Server Environment
- Next.js - React dev framework
- Material-UI - UI library
Security: bcryptjs, express-mongo-sanitize, express-rate-limit, helmet hpp, json web token, xss-clean, validator, cors.
Data fetching: axios, useSWR.
Data modelling: mongoose.
Forms/Image processing: Formik, Yup, Multer, Sharp.
Email: nodemailer, nodemailer-express-handlebars, html-to-text, SendGrid.
Routes: Postman API routes
Required environmental variables in this project include:
DATABASE: MongoDB ChatAway connection string
DATABASE_PASSWORD: MongoDB ChatAway database password
JWT_SECRET: the secret string required for password encryption
JWT_EXPIRES_IN: the time that the user token lasts
JWT_COOKIE_EXPIRES_IN: the time that the user cookie lasts
EMAIL_FROM: the ChatAway mail account
SENDGRID_USERNAME: the SendGrid username for nodemailer
SENDGRID_PASSWORD: the SendGrid password for nodemailer
- Hat tip to anyone whose code was used