a snapchat inspired backend chat application
Our goal is to develop the backend infrastructure for a chat application that draws inspiration from Snapchat's ephemeral messaging features. This chat application should allow users to send text, images, and videos that will disappear after a set duration. Users should also be able to engage in private and group chats.
- User Registration: Users should be able to register for an account using their email address. They should provide a username and set a password.
- User Authentication: Implement secure user authentication mechanisms, including password hashing and token-based authentication.
- Text Messages: Users should be able to initate conversations, send and receive text messages in real time.
- Message Expiration: All messages, including text, images, and videos, should automatically disappear after a predefined time (24 hours).
- Saving Messages: User shoud have the option of saving messages so they don't expoire after 24 hours. Such saved message should be saved for the preceding conversation for as long as possible
- Friends: Users should be able to make friend requests to other users who aren't on their list of friends. Users should also be able to accept or reject a friend request.
The backend should be built using Go for its scalability and performance. Utilize a suitable database (e.g., PostgreSQL) for data storage and a WebSocket library for real-time messaging.
A fully functional Golang backend having all the aforementioned features.
- Proper Logging
- MongoDB as a persistence layer
- Redis for temporary storag
- Low latency
- Minimal memory usage
- Secure password hashing
- Web socket integration with support for horizontal scaling
- Project setup
- Onboarding and Authentication
- Friend Requests
- Sending and Receiving of messages
- General application review
Before you begin, ensure you have met the following requirements:
- Go (v1.17 or higher) installed on your system.
- Docker and Docker Compose for database setup (optional).
The successful development of Go - chat will help develoopers have a broader understanding of building production applications in Golang, combining the best aspects of Snapchat's ephemeral messaging with modern chat app features.