Coder Social home page Coder Social logo

stefanaki / my-charts Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 4.92 MB

Event-driven SaaS for creating interactive charts

Shell 0.33% Dockerfile 0.51% TypeScript 97.24% JavaScript 1.13% HTML 0.59% CSS 0.19%
chartjs event-driven firebase google-cloud microservices nestjs nx react serverless typescript

my-charts's Introduction

Ntua SaaS 10 Monorepo

This project is an event-driven architecture-based application that converts CSV data into interactive charts and to their png|svg|pdf|html formats.

It uses NX as it's build system and its almost 100% based on TypeScript.

Technologies Used

  • Nx: A next generation build system with first class monorepo support and powerful integrations.

  • Nest.js: A framework for building scalable and maintainable server-side applications using TypeScript.

  • React: A JavaScript library for building user interfaces.

  • Firebase: A comprehensive suite of cloud-based tools and services provided by Google, including Firestore for NoSQL database, Firebase Cloud Functions for serverless functions, and Firebase Hosting for web app deployment.

  • Docker: A containerization platform that allows packaging applications with their dependencies into standardized units.

  • Cloud Run: A serverless compute platform provided by Google Cloud for deploying containerized applications.

  • MongoDB: A popular NoSQL database used for the resource-related microservice.

Project Concept

The goal of this project is to provide a user-friendly web application that enables users to upload CSV files and convert the data into interactive charts. The application follows an event-driven architecture, allowing for loose coupling and scalability.

The project is organized as a monorepo using Nx, which provides a powerful development environment for managing multiple related projects. It includes the following components:

  • Web App: A React-based web application that provides the user interface for uploading CSV files, visualizing data, and generating charts.

  • Nest.js Backend Services: Backend services built with Nest.js, responsible for handling file uploads, data processing, and chart generation. These services follow an event-driven architecture, enabling them to communicate with each other through events.

  • Firebase Functions: Cloud Functions are used for serverless execution of backend logic, such as file processing and chart generation. They integrate with Firebase services like Firestore and Cloud Storage.

  • Shared: A shared package that contains shared code and utilities used across different packages within the monorepo.

  • Web Lib: A shared web library containing smart and dumb UI components, hooks, i18n and other common env configurations to be shared across diffrent React web applications

Prerquisites

pnpm add -g firebase-tools nx
firebase login --reauth
  • You also need gcloud and gsutils cli's
  • Firebase Emulators require Java SDK 8 or higher
  • A .env file requested by codeowners
  • A .env.local file containing
  GOOGLE_APPLICATION_CREDENTIALS=~/.config/firebase/${email}_gmail_com_application_default_credentials.json

Development

pnpm serve

or

nx serve [project]

Building

pnpm build

or

nx build [project]

Deployment

pnpm deploy:all

or

nx deploy [project]

my-charts's People

Contributors

christos97 avatar stefanaki avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.