Skip to content

andrearcaina/fafnir

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

63 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

fáfnir

The name "Fáfnir" is inspired from Norse mythology, and refers to a dwarf who transformed into a mythical Germanic dragon, so he can guard his treasure hoard of gold and such.

This is a purely educational project that serves as a hands-on demonstration of building a modern codebase that explores microservices architecture, asynchronous event-driven design, and best practices for creating a scalable, distributed application. I do not intend to use this project for other purposes and is mostly a playground for my learning, experimentation, and exploration.

Now for the application: It is designed to function as the backend for a stock trading simulator/platform, including services for user management, authentication, stock data retrieval, buy/sell operations, and security/permissions.

Documentation

For more detailed information, please refer to the documentation in the docs/ directory, or visit the following links:

Guide Description
Architecture Project structure, service overview
Development Setup, local dev, make commands
Database Migrations, Goose, DB details
GraphQL API schema, queries, mutations
Designs Excalidraw designs and images

TODO

In no particular order:

  • Design and implement additional microservices.
  • Integrate NATS for asynchronous events and messaging (issue #11).
    • Swapped from Pub/Sub to Worker Queues for message persistence with NATS JetStream (issue #20).
    • Implement more events across services than just user creation.
  • Create system architecture, network and data diagrams (upkeep as much as possible).
  • Build a simulation/orchestration engine for app events.
  • Add unit, integration, end-to-end and load/stress tests.
    • Perform load testing using Locust to simulate concurrent users (issue #8).
  • Explore Kubernetes local implementation (issue #5).
  • Explore centralized logging CLI with Elasticsearch for Minikube (issue #6).
  • Implement a CI/CD pipeline for automated testing and Docker builds.

About

distributed and scalable microservice backend for trading platforms

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published