Rememberry is a web app that combines the value of spaced repetition of flashcards and visualisation of mind maps. Every user can create their own maps that have a tree-shaped design where the branches are the topics, and the leaves at the end are just regular flashcards. The main goal is that when users are trying to learn for their upcoming exam, instead of just learning with plain flashcards, they can create a map that immediately shows how certain topics and flashcards are connected.
- Node.js - Version 20 (as a runtime)
- Bun - Version 1.1 (as a bundler for the backend)
- pnpm - Version 8.15.5 (as a package manager)
- Docker - Version 25.0.3
It is recommended to install
node
with nvm and then set thenode
version withnvm use 20
.
Please note that this repository is using
pnpm
as a package manger instead ofnpm
. AND it is usingbun
as a bundler for the backend.
This tuturial is written on and for unix like systems.
git clone https://github.com/rememberry-io/rememberry
cd rememberry
cp .env.example .env
pnpm i
pnpm run docker-db-init
Currently two services are present in this repository, the backend (built using tRPC) and
the frontend (built using Next.js) and it is possible to either run
them locally with pnpm
or in docker
.
For ideal development for either backend or frontend it is recommended to run the service,
that is developed for, with pnpm
to take advantage of the hot reload.
To take advantage of the pnpm workspace, use pnpm --filter=<service>
like:
pnpm --filter=backend
depending on which service is interacted with.
pnpm add --filter=backend <package-name>
pnpm add --filter=frontend <package-name>
For simpler development instead of using pnpm run --filter=<service> dev
it is
possbile to use the alias pnpm run <service> dev
. The scripts (such as dev
) are then
defined in the local package.json
file of the corresponding service and can be run with the alias.
pnpm run backend dev
pnpm run frontend dev
As mentioned, it is possible to run either the backend or the frontend as a docker container.
For this case two pnpm
commands are avaiable.
pnpm docker-build-backend
pnpm docker-build-frontend
To start all docker containers (this will also start the database if it has not been initialised yet) at once run:
pnpm docker-build-all
This repository is using docker compose
to run services inside of docker, which
means using commands such as docker compose start/stop/down frontend/backend
are completely valid and are encouraged to be used or taking advantage of docker
desktop is also possible.
In case new migrations are added run the following command
This will delete all content in the database therefore only for local devleopment
pnpm run docker-db-reset
- Typescript
- tRPC
- Postgres
- Drizzle
- Nextjs
- Kubernetes
- GitHub Actions
Backend, Frontend, Setup, CI/CD and Hosting:
- Laurin Notemann Laurin-Notemann
Fronted UI:
- Paulo Ramirez paulocerez
- Joel Heil-Escobar Joelheile
Backend:
- Lennart Pafel lnart
- all functions are defined as arrow function () => {}
- except methods for classes and page.tsx pages
- all exports are named, no default export except for page.tsx
- for components with props we use FC
- e.g. export const test: FC = ({...props}) => {}