Obserfy
Record keeping and parent communication tool for Montessori based schools.
This is the main repo of Obserfy. This repo contains every code that you need to run Obserfy on your own. Obserfy is currently still on its early days. If you were to give it a try, we would love to hear any of your feedback through github issue, or email at chrsep@protonmail.com.
Vision
Obserfy aims to empower teachers and schools to provide high-quality education to more children by simplifying and automating as much of their works as possible. Our software should be fast, simple, and accessible. It should get out of the way of the teachers, allowing them to focus on understanding and planning the education of their students.
Codebase
Technologies
- Golang: For handling routing and API
- React: For web frontend App
- Typescript: Typesafe Javascript for frontend
- Postgres: Database
Folder structure
vor/
|--docker # Docker config files
|-- nginx # Nginx that handles https and frontend caching (optional)
|-- postgres # Postgres db for development only
|-- vor # Docker image for running Obserfy
|--frontend # Frontend SPA built on Gatsby
|--pkg # Routing and APIs using go
|--mailTemplates # Templates for emails
Backend
Below are a high level overview of the big dependencies that we use for our go powered backend:
Frontend
Currently, we are focusing on building a great web experience with PWA support for the client. Below are the tech stack we use for our frontend:
- Gatsby: For building performance optimized SPA/PWA
- React: For the view layer
- Typescript: For type checking
- Storybook: For easier development and react component documentations
- Testing
- Jest: For snapshot and unit tests
- Cypress: For e2e test
Initial setup
Pre-requisite
To run obserfy for development, you'll need the following tools:
- Docker: See the Docker documentation for instructions to install
docker
and docker-compose
- Node:12: Install node 12, we recommend nvm to do this, so that you can have multiple node versions on you computer.
- Yarn V1: See yarn's documentation on how to install.
Setup env
Simply copy the .env.example into .env so that it will be read by docker-compose.
cp .env.example .env
Running obserfy
Docker compose
You'll need to run docker-compose, it will start up every backend service we need for development, such as DB, Nginx, the application server itself, etc. To run docker-compose simply run:
docker-compose up -d
If you're only modifying the application server codes, this should be enough. It will run the application server code with live reload. It also will run with debugging enabled via go-delve on port 40000
. The application server will be serving on http://localhost:8000
.
Gatsby development server
To develop the web frontend, you'll need to start the gatsby development server. First go to the frontend folder.
cd frontend
Then install its dependencies.
yarn install
Then you'll be able to run gatsby's development server.
yarn develop
This will start gatsby's development server on http://localhost:8001
. It will proxy all request to its /api
and /auth
routes to the application server on http://localhost:8000
automatically.