# Introduction to Building a Mini Chatting App

I have many tips and opinions about building a mini-chat app. It's been on my mind, so why not create a series covering everything? It could include guides, tutorials, and commentary. With feedback, I can focus on what readers find most useful. Adding case studies, expert interviews, and practical examples will make it more engaging.

### Expectations

Let's clearly define and limit the expectations of what we will deliver at the end of this blog series. Setting realistic goals from the beginning is important to avoid misunderstandings.

No, you won't pitch the mini-chatting application to investors for funding. Additionally, you won't be taking it to market once we finish this series. Our primary aim is to provide a learning experience, focusing on the development process and the technical challenges involved.

At the end of the day, users will be able to:

1. Sign in/sign up (based on whether an account record exists)
    
2. Sync contacts
    
3. Start a chat
    
4. Create a group
    
5. Chat with a group
    
6. Leave a group
    
7. See who is online
    

Note: Users can only use text, no media sharing.

### Tools Used

| Technology | Purpose |
| --- | --- |
| NestJs | Our backend framework |
| Flutter App | Our cross-platform technology for building the app |
| Firebase Cloud Messaging | For signaling and event streaming |
| PostgreSQL | Our database for building relationships |
| Docker, k8s, and Terraform | For containerization, orchestration, and IAC |
| Redis | For scalable memory cache |

### Series Outline

**Part 1: Setting Up the Development Environment**

* Installing necessary tools and dependencies
    
* Setting up NestJS for the backend
    
* Initializing a Flutter project for the frontend
    

**Part 2: Building the Authentication System**

* Implementing sign-in and sign-up functionality
    
* Integrating JWT for secure authentication
    

**Part 3: Contact Synchronization**

* Creating a service for syncing contacts
    
* Handling contact permissions and access
    

**Part 4: Chat Functionality**

* Setting up the chat backend
    
* Developing the chat UI in Flutter
    
* Implementing real-time messaging using Firebase Cloud Messaging
    

**Part 5: Group Chat Features**

* Creating and managing groups
    
* Implementing group chat functionality
    
* Handling group events like adding or removing members
    

**Part 6: User Presence**

* Tracking online/offline status
    
* Displaying user presence in the app
    

**Part 7: Deployment and Scaling**

* Containerizing the application with Docker
    
* Deploying with Kubernetes
    
* Managing infrastructure with Terraform
    

**Part 8: Final Touches and Best Practices**

* Ensuring code quality and performance
    
* Implementing security best practices
    
* Preparing the application for production use
    

Stay tuned as we build our mini chatting app step-by-step. By the end, you'll understand the development process and have the skills to tackle similar projects. Let's get started!
