Onboarding Overview
Welcome to our team! This document will provide you with a high-level overview of our tech stack, project structure, and workflow. We hope this will help you get up to speed quickly.
Tech Stack
Our technology stack consists of the following:
-
Frontend : We use React for our frontend development. For routing, we use Inertiajs. You can find a tutorial [here](Add link).
-
UI : We use Shadcn UI for our user interface design.
-
Bundler/Dev Server : We use ViteJS for bundling and as our development server. You can find a tutorial [here](Add link).
-
Backend : Our backend is powered by Django and Inertiajs views.
-
Containerization : We use Docker for running everything in development (aside from the frontend).
-
Database : We use Postgres for our database. In development, we use Docker and Supabase in production.
-
Caching and Mail Services : We use Redis for caching and Mailhog for the services. In production, we use any supported SMTP.
-
AI : We use Langchain for the library that powers the reports app and OPENAI.
-
Error Handling : We use Sentry for error handling.
Project Structure
Our project is structured as follows:
Project
|── apps
| |── accounts
| |── auditlogs
| |── tenants
| |── common
| |── rolepermissions
| |── payments
| |── users
| |── webhooks
| |── contrib
| |── dashboard
|── init.py
|── assets
| |── js
| | |── components
| | |── hooks
| | |── layouts
| | |── lib
| | |── pages
| | |── queries
| | └── services
| | |── queries
| | |── app.jsx
| | |── error.jsx
| | └── ssr.js
| └── css
| └── app.css
└── config
|── settings
| |── production.py
| |── base.py
| |── local.py
| └── init.py
|── api.py
|── asgi.py
|── roles.py
|── urls.py
|── websocket.py
└── wsgi.py
Running a Project Locally
Our project runs in Docker Compose, which brings up a number of services at startup. We also run a Vite dev server. We have built a CLI tool to run the Docker Compose. You can find the link to the Vanty CLI repo and the documentation for the CLI [here](Add link).
Workflow - Developing a Feature
We use GitHub extensively for pipelines and code. Here’s a typical workflow for developing a feature:
-
Define : Clearly define the feature and scope it into reasonable bits. Use user stories. For example, “As a user, I want to summarize PDFs using AI.”
-
Create Separate Tasks : Create separate tasks (tickets) for the backend, frontend UI, and connecting the bits.
-
Backend : Upload a PDF - model for saving the data logic for parsing PDF and saving the embeddings - Langchain + parsing.
-
Create an App : Use Django admin to create a new app, create a schema and place it in new app.schemas. Run the custom admin command to scaffold the API and frontend queries and mutations based on this.
Resources
Depending on your level, these resources may be useful:
-
Basics about Django if you are coming from another Python or some framework
-
Request/response, middleware, routing, views. Consider doing this tutorial: Django Introduction
We’re excited to have you on board and can’t wait to see what you’ll contribute to our projects!