Introduction

Amigrant: A PWA for amizone.

Amigrant is supposed to be a project which addresses the problems and shortcomings of amizone. It'll provide a PWA(progressive web app) without the need to login again-and-again i.e your credentials will be cached locally on your browser.

The PWA will offer all the features currently supported by the go-amizone API (opens in a new tab) along with a discussion thread similar to reddit or twitter. It'll also provide an API for amizone bots like Amibot (opens in a new tab), Amibot-tg (opens in a new tab) and Amibot discord (opens in a new tab).

Project vision

Extract structured metadata from PYQ's

There are approximately 12.5k pyq's from Amity University, Gurugram's question bank (opens in a new tab) + pyq's contributed by the community. So we will first need to extract the text using OCR (opens in a new tab) then extract the structured metadata from them using NER (opens in a new tab) or by open source LLM (opens in a new tab) through Langchain (opens in a new tab)

The metadata will include but not limited to:

  • Subject/Course code
  • Subject/Course name
  • Exam type: Minor/Major, Mid-term, End-term
  • Date: Month-Year(2024)
  • Set

Design UI/UX

We will use the components from shadcn/UI (opens in a new tab) and customize them to our needs. Along with this we will NOT be using Tailwind (opens in a new tab) rather we will be utilizing custom CSS.

Resources:

Server/API

The server/API will be written in Golang (opens in a new tab) as the go-amizone SDK (opens in a new tab) is available. Hence, it'll provide a better development ecosystem as all the APIs, whether it is go-amizone or amigrant, will be in a single codebase.

Testing

The project will have a holistic set of tests to provide better bug detection and error coverage.

Documentation

The project's documentation will be generated using Nextra.js (opens in a new tab) and it'll contain information about the Amigrant API, Amigrant PWA, conventions, and contribution guildelines related to the same.

Tech stack

Tech stack is up for discussion i.e it can be changed since the project is in infant stage.

  • Data extraction: NER or langchain.
  • Frontend: Next.js, shadcn/UI and custom CSS.
  • Backend: go-amizone SDK and Gin (opens in a new tab).
  • Testing: respective testing frameworks.
  • Documentation: Nextra.js
  • Database: MongoDB or Postgresql