Skip to content
/ eva Public

A kind of LMS for my university, inspired by the universitys current EVA.

License

Notifications You must be signed in to change notification settings

FreeAoi/eva

Repository files navigation

EVA - UNI

EVA -> Entorno Virtual de Aprendizaje (Virtual Learning Environment)

A kind of LMS for my university, inspired by the university's current "EVA".

Why?

Although my university uses Moodle as LMS, I didn't care and wanted to reinvent the wheel, so here it is, a project for me to spend time on.

Screenshot

Main page

Made with

These are the technologies used to develop this project

Programming language and runtime

TypeScript Node.js

Backend / Server

Web server

Fastify NestJS

Data management

Prisma PostgreSQL

Authentication

JWT

Cache layer

Redis

Unit testing

Jest

Linting

ESLint

Environment preparation

Docker

Frontend

JS framework

React Next JS

CSS framework

TailwindCSS

Answering about tech stack

Why Fastify?

Fastify is one of the fastest web servers for Node.js, and it's also very easy to use. It's also very lightweight, which is a good thing for a server that will be running 24/7.

Why NestJS?

NestJS is one of the best frameworks for Node.js for building scalable and maintainable backend applications. It's have a lot of features to make life easier and i like its DI system.

Why Prisma?

IDK, i just like it. It's very easy to use and strong typed.

Why NextJS and TailwindCSS?

Well, i select Nextjs since it's the most popular framework for React (it's used by Big companies like Netflix, Vercel, etc) for building fast, scalable and maintainable frontend applications. TailwindCSS is a utility-first CSS framework for rapidly building custom designs and i dont select bootstrap since i dont like write a lot of CSS for simple comoponents.

Setup

Prerequisites

  • Docker
  • Node.js

Installation

  1. Clone the repository
  2. Install dependencies
npm install
  1. Install docker containers
docker-compose up -d
  1. Push changes to database
npx prisma migrate dev --name init
  1. Run the backend
npx moon run server:dev
  1. Run the frontend (in another terminal)
npx moon run client:dev

and you're done! The frontend will be running on http://localhost:3000 and the backend on http://localhost:3001

Future plans

  • Add a notification system (for example, when a new assignment is published)
  • Maybe add a chat system
  • Unit testing for the backend (I'm thinking how to do it)

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

About

A kind of LMS for my university, inspired by the universitys current EVA.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •