natternet

module
v0.0.0-...-9cb16bd Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 1, 2023 License: Apache-2.0

README ¶

NatterNet

Your real-time chat application built with Golang, MongoDB, WebSockets, and Fasthttp.

Table of Contents

  1. Introduction
  2. Features
  3. Resources & Community
  4. API Documentation
  5. Blog Posts
  6. License

Introduction

NatterNet is a fast and lightweight chat WebSocket service built with Golang, MongoDB, WebSockets, and Fasthttp. It aims to provide a scalable and efficient platform for real-time chat applications.

Features

Completed Features
  • User Authentication

    • JWT-based authentication.
    • RSA keys for JWT signing.
  • Real-time Communication

    • WebSocket support for real-time updates.
    • Real-time "typing..." status display.
  • Rooms

    • Create, join, and leave rooms.
  • Message Types

    • Support for text messages.
  • Distributed Systems

    • NATS Streaming for event-driven architecture.
  • Logging

    • Comprehensive logging with Uber's Zap logger.
  • API and Web Server

    • API built on top of Fiber (FastHTTP).
  • Database

    • MongoDB for persistent storage.
Upcoming Features
  • Support for more message types like images, audio, video, etc.
  • Push notifications via Firebase/OneSignal.
  • User presence system.
  • Message editing and deletion.
  • Multi-language support.
  • Rate limiting for API requests.

Resources & Community

We've compiled a list of resources that will help you understand, use, and contribute to NatterNet more effectively:

  • Postman Team: Join our Postman Team to explore NatterNet's API.

  • Community Chat: Have questions, feedback, or just want to chat? Join our Discord Server.

  • Wiki: For detailed guides, FAQs, and other information, check out the NatterNet Wiki.

  • Blog Posts: Deep dives into the architecture, domain-driven design, and other facets of NatterNet are available in our Substack Blog.

Feel free to contribute by submitting PRs, opening issues, or spreading the word.

API Documentation with Swagger

You can access the API documentation through Swagger at the following endpoint after starting the application:

http://localhost:8080/api/v1/swagger/

Tip: Before delving into the documentation, ensure to execute make swagger at the project root. This step regenerates essential Swagger components, keeping the docs updated.

📚 Blog Posts for Deeper Understanding

Want to get more in-depth insights into NatterNet? Check out our blog posts:

  1. Introducing NatterNet: A Domain-Driven Real-Time Chat Application

    • Introduction to NatterNet and its architecture.
  2. NatterNet: A Deep Dive into Clean Architecture

    • Learn the details of how Clean Architecture is implemented in NatterNet.
  3. Deep Dive into Domain-Driven Design in NatterNet

    • Understand the nuances of Domain-Driven Design as it's applied in NatterNet.

License

NatterNet is licensed under the MIT License. See the LICENSE file for more details.

Directories ¶

Path Synopsis
cmd
app
app/config
Package config aims to provide a config package
Package config aims to provide a config package
app/context/mocks
Package mockcontext is a generated GoMock package.
Package mockcontext is a generated GoMock package.
internal
chat/domain/repository/mocks
Package mockchatrepository is a generated GoMock package.
Package mockchatrepository is a generated GoMock package.
chat/domain/services/mocks
Package mockchatdomainservices is a generated GoMock package.
Package mockchatdomainservices is a generated GoMock package.
user/domain/repository/mocks
Package mockuserrepository is a generated GoMock package.
Package mockuserrepository is a generated GoMock package.
user/domain/services/mocks
Package mockuserdomainservices is a generated GoMock package.
Package mockuserdomainservices is a generated GoMock package.
pkg
errorhandler
Package errorhandler defines the error codes to be used by other packages
Package errorhandler defines the error codes to be used by other packages
hashing/mocks
Package mockhashingfactory is a generated GoMock package.
Package mockhashingfactory is a generated GoMock package.
jwt
jwt/mocks
Package mockjwt is a generated GoMock package.
Package mockjwt is a generated GoMock package.
logger
Package logger creates a logger instance
Package logger creates a logger instance
mongodb
Package mongodb is a module for mongodb
Package mongodb is a module for mongodb
mongodb/mocks
Package mongodb_mock is a generated GoMock package.
Package mongodb_mock is a generated GoMock package.
nats
Package nats is a module for nats
Package nats is a module for nats
nats/mocks
Package nats_mock is a generated GoMock package.
Package nats_mock is a generated GoMock package.
utils/mocks
Package mockutils is a generated GoMock package.
Package mockutils is a generated GoMock package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL