/go-amizone

Reverse-engineered API + SDK for the Amizone Student Portal.

Primary LanguageGoApache License 2.0Apache-2.0

go-amizone

Tests Coverage Status Go Report Card Go Reference Issues License

go-amizone is a simple and robust Go library and API server for the Amizone student portal. This library is intended to be used as a self-hosted Go API or as an SDK in your Go application.

Inspiration

Amizone is the student portal for Amity University. It's indispensable for students to access their grades, attendance, class schedule and other information. The catch: it's buggy, slow and goes down all the time! Students have made a slew of alternative apps and tools to access the portal over the years -- many of them mobile apps, but also arguably better approaches like the excellent monday-api bot by @0xSaurabh (my initial inspiration!)

But why go-amizone? Because I wanted a simple, lean and robust API client for Amizone to develop an application of my own and no existing solution seemed good enough. With this, I set out to develop something everyone (including me) could use to build their own projects around the portal. While go-amizone is written in Go (duh), it has a WIP OpenAPI documented API server which enables autogenerated SDKs for any language under the sun!

Completeness

go-amizone is far from complete. While its completely possible to use in applications today, there are no guarantees yet for a stable API, which will come around with the 1.0 stable release. In the coming weeks I'll be adding more features to drive the library closer to covering a more complete range of the data and features the Amizone portal exposes.

Installation

The library can be installed either as an SDK to use in your own Go project or as a self-hosted API with the server binary. With the latter, you would be able to use Swagger to generate SDKs for other languages in the near future.

SDK

Install the library using go get github.com/ditsuke/amizone-go. The public API is well documented through godocs, easily accessed on pkg.go.dev or godocs.io.

API Server

The API Server offers a RESTful API through a single Go binary. It is intended to be used self-hosted on a VPS or a PaaS like Heroku, but I'll have a central deployment up soon so everyone can try out! To try locally, run:

go install github.com/ditsuke/go-amizone/cmd/amizone-api-server@latest # installs the binary
amizone-api-server # runs the server

A docker image will be made available soon to make deployments easier.

Contributing

Contributions to go-amizone are welcome! If you have a bug or feature request, please open an issue on the GitHub repo. Code contributions should be a great way to get started with Go development and learn about the language, reverse-engineering, and other cool stuff.

Please read the contribution guide for more information on how to get started.