This project is a Full-Stack Discord-like real time chat application that I am developing as a learning excercise to improve my software design techniques and practice with modern web development technologies. It is currently a work in progress.
- Master real-time communication between frontend and backend programs using websockets.
- Learn how to build a Java Rest Api.
- Connect a Java program to a database using Spring Data (MongoDB).
- Authenticate users with session cookies in Spring Security.
- Learn how to prevent cross-site request forgery with Spring Security.
- Build a frontend app with React.
- Make api requests from frontend to backend.
- Understand the decision process behind improving UX.
- User authentication
- Server creation and management (create/delete servers/invites)
- Channel creation and management (create/move/delete channels)
- Direct messaging
- Real-time message updates
- User roles and permissions (server-wide and channel specific) management
- User Friendship management (add friends, delete friends, block users)
- Frontend: Typescript, Node, CSS, Nextjs, React, React Router, Axios, dnd-kit, js-cookie, jest
- Backend: Java, Spring Boot, Spring Security, Spring Data, MongoDB, TestContainers, JUnit
- Real-time Communication: WebSockets
- Clone the repository
- Set up environment variables
- Install frontend and backend Dependencies
- Run the frontend and backend services with two options.
- Start the containerized application in concert with docker compose up
- Start the frontend and backend dev servers separately
Once the app is running head to the registration page and create an account to use the app.