Skip to content
This repository has been archived by the owner on Feb 28, 2024. It is now read-only.

XFox111/MuiCharts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MuiCharts

Small demo app on .NET/React. Job entry challenge

Devcontainers

This repository is equipped with configuration files for Dev Containers feature which allows you to develop this project in a containerized environment. You can use VS Code with Dev Containers extension and Docker or you can use GitHub Codespaces. Read more at Developing inside a Container.

Backend

Path: /backend

Backend is a simple ASP.NET Core Web API project with EF Core and SQLite. It provides a RESTful API for the frontend to consume and incorportaes DDD principles.

Projects

  • MuiCharts.Api - ASP.NET Core Web API project
  • MuiCharts.Contracts - Shared Web API contracts that can be extracted into a separate package and shared between the client and the server
  • MuiCharts.Infrastructure - Infrastructure layer with EF Core and SQLite
  • MuiCharts.Domain - Domain layer with business logic and models

Essential variables

Use these properties as environmental variables or CLI arguments to configure the backend:

CORS

  • Cors:Origins=[*] - Origins allowed by CORS
  • Cors:Methods=[GET,PUT,POST,DELETE] - Methods allowed by CORS

HTTPS

If you want to use Kestrel as your primary web server (with no reverse proxy), you can use the following properties to configure HTTPS with Let's Encrypt certificate:

  • HTTPS_PORTS=443 - Listen for HTTPS requests on port 443
  • LettuceEncrypt:AcceptTermsOfService=true - bypass interactive prompt
  • LettuceEncrypt:DomainNames:0=example.com - domain name for the certificate (use :1, :2, :3, etc. to add more)
  • LettuceEncrypt:EmailAddress=eugene@xfox111.net - email address for certificate issuer

Note: you need to have either a public IP address or a domain name to use Let's Encrypt certificates. Otherwise, use dotnet dev-certs https to generate a self-signed certificate.

Data persistence

Configure these options if you want to change default paths for data persistence:

  • ConnectionStrings:DataContext=Data Source=/persistence/data.db - SQLite DB connection string (default: Data Source=/persistence/data.db for Production and Data Source=data.db for Development)
  • LettuceEncrypt:CertificatesPath=/persistence - path to store Let's Encrypt certificates (default: /persistence)

IMPORTANT: default persistence paths are configured to be used in a Docker container, where the user is root. /persistence is not writtable by a non-root user, so you need either to change the paths if you want to run the app outside of a container without root privileges or run app as sudo.

Frontend

Path: /frontend

Frontend is a simple React app with Material-UI. It consumes the RESTful API provided by the backend (or uses its emulation) and visualizes the data.

API host URL

Use VITE_API_URL variable on build time to configure URL for backend host

GitHub Actions

Path: .github/workflows

There are two GitHub Actions workflows:

  • docker-backend.yml - CI/CD for the backend. Deploys the app to a remote server using Docker and SSH
  • ghpages-frontend.yml - CI/CD for the frontend. Deploys the app to GitHub Pages

About

Small demo app on .NET/React. Job entry challenge

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published