A backend framework for building fast and flexible APIs rapidly.

Overview

Andromeda

Andromeda is a backend framework for Rust, to simplify the development of the kinds of basic API services that we developers have to build so often.

Motivation

If you've ever built an API before, the kinds of things you're doing are usually pretty similar: connect to a database, make some get_all queries, some get_some queries, add authentication somehow, add some deletes, some updates, some add_ones, expose it all through a server, and it's done. The logic behind all that might be doing AI sentiment analysis with self-training twelve-dimensional trans-temporal hypermodels, but the API layer is pretty darn predictable.

So, Andromeda was born! The idea is this: you, as a developer, should be able to declare the types you want to have in your database (e.g. User), and then say what kinds of queries you want to be accessible on that type (e.g. get_one, get_some, add_one, etc.), and it should just work. This might sound pretty familiar if you've used something like Strapi before, and Andromeda is kind of like a non-GUI version of Strapi, with inbuilt support for powerful authentication without having to define a million special functions. When a user is authenticated, your resolvers get a little object that tells you about them, and you can do whatever you want with that --- wave them through, vehemently deny access, etc.

When we were building this, we realised that most APIs follow a pretty common pattern. GraphQL kind of got this in their schema of queries, mutations, and subscriptions, but we've taken that further to define the explicit types of queries, mutations, and subscriptions that are used in today's apps. But, if you want to do something a bit more unique in your app, you can easily define a custom resolver for it!

Oh, and aren't we all a bit fed up with having to spin up Docker instances of MongoDB on our local machines? Andromeda uses SQLite automatically in development, and comes with batteries installed. Going to production? Automatic migration to any supported database. 😎

Last thing: it's Rust. It's fast. Happy?

Project Status

Andromeda is currently in the early stages of development and testing, with a v0.1.0 release expected hopefully before the end of 2022! It'll probably be riddled with bugs and be absurdly unergonomic, but, after a few versions, we should have sorted ourselves out! If you think Andromeda sounds like it would be useful for you, check out out contributing guide to see where you might be able to help out! Every little bit helps us deliver a higher-quality library faster!

License

See LICENSE.

You might also like...
Zomby7e's Blog - Backend

7eblog_backend Zomby7e's Blog - Backend, is just a micro blog backend. This project is written in Rust, it depends on Actix, uses SQLite to store data

A candidate backend for the Telegram channel @KonachanPopular
A candidate backend for the Telegram channel @KonachanPopular

Konachan Popular (Rust) This repository contains the source code of the backend program running the Telegram channel @KonachanPopular. Run in a Contai

A real-time data backend for browser-based applications.

DriftDB DriftDB is a real-time data backend for browser-based applications. For more information, see driftdb.com. Structure of this repo docs/: main

A Noir's backend implementation using gnark

Using gnark as a backend for Noir If you want to develop a backend for Noir, basically what you need to do is to translate an ACIR (Abstract Circuit I

Dataflow system for building self-driving car and robotics applications.

ERDOS ERDOS is a platform for developing self-driving cars and robotics applications. Getting started The easiest way to get ERDOS running is to use o

A query-building & utility crate for SurrealDB and its SQL querying language that aims to be simple

Surreal simple querybuilder A simple query-builder for the Surreal Query Language, for SurrealDB. Aims at being simple to use and not too verbose firs

A tutorial of building an LSM-Tree storage engine in a week! (WIP)

LSM in a Week Build a simple key-value storage engine in a week! Tutorial The tutorial is available at https://skyzh.github.io/mini-lsm. You can use t

Integra8 rust integration test framework Rust with a focus on productivity, extensibility, and speed.

integra8 Integra8 rust integration test framework Rust with a focus on productivity, extensibility, and speed. | This repo is in a "work in progress"

🧪 The versatile and intuitive memory hacking framework.

🧪 hax 🤔 About hax is a Rust crate designed to make memory hacking, game hacking, cheat development, and any other low level memory based development

Owner
Framesurge
Building the frameworks of the future.
Framesurge
A developer-friendly framework for building user interfaces in Rust

Reading: "Fru" as in "fruit" and "i" as in "I" (I am). What is Frui? Frui is a developer-friendly UI framework that makes building user interfaces eas

Frui Framework 1.1k Jan 8, 2023
Safe, idiomatic bindings to cFE and OSAL APIs for Rust

n2o4 The n2o4 crate provides safe, idiomatic Rust bindings to the APIs of cFE and OSAL, the libraries of the Core Flight System (cFS). IMPORTANT NOTE

null 3 Aug 29, 2022
Rust-idiomatic, compliant, flexible and performant BIP21 crate

Rust implementation of BIP21 Rust-idiomatic, compliant, flexible and performant BIP21 crate. About Important: while lot of work went into polishing th

Martin Habovštiak 6 Dec 15, 2022
A typesafe, flexible, simple, and user-friendly unit system library for Rust that has good error messages.

uy A typesafe, flexible, simple, and user-friendly unit system library for Rust that has good error messages. Usage uy not only stores the unit of a v

Lachlan Sneff 19 Aug 8, 2023
Rust Library for controlling divoom devices that support REST APIs, such as pixoo-64.

Divoom Rust Library for controlling divoom devices that support REST APIs, such as pixoo-64 (and from how divoom's api/doc organizes, maybe more in th

Riff 16 Dec 23, 2022
A simple path traversal checker made with Rust. Useful for APIs that serve dynamic files.

Path trav A simple path traversal checker made with Rust. Useful for APIs that serve dynamic files. Note: this is a security tool. If you see somethin

Gátomo 3 Nov 21, 2022
Stack heap flexible string designed to improve performance for Rust

flexible-string A stack heap flexible string designed to improve performance. FlexibleString was first implemented in spdlog-rs crate, which improved

Sprite 6 Feb 9, 2022
A flexible, stateless implementation of the bisection method

Flexibility is achieved by giving the user of this crate control over the input and output types

Martijn Gribnau 2 Nov 8, 2022
🤩 Flexible interpreted programming language

Jel Flexible, memory-safe, easy-to-use, interpreted programming language. work in progress Example Hello World: print(Hello World!) # this is valid pr

0x707 4 Sep 18, 2022
This repository serves as the backend for the Torrust Index project.

Torrust Index Backend ?? Important Updates ?? None at the moment ACCESS ALL UPDATES Index PROJECT DESCRIPTION PROJECT ROADMAP DOCUMENTATION INSTALLATI

Torrust 6 Dec 15, 2022