/spacetime

A fully featured cross-platform API Client for REST, gRPC, and more. Built with .NET MAUI Blazor

Primary LanguageC#MIT LicenseMIT

Build MacOS Windows Discord

Logo

spacetime

A fully featured cross-platform, cross-transport API Client, wormholes excluded.
Explore the docs »

Report Bug · Request Feature

Spacetime is not production-ready and is in active development. Pre-release users are welcomed with this warning in mind.

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Contributing
  5. License
  6. Contact
  7. Acknowledgments

About The Project

  • REST
  • gRPC (we support server reflection! stop reloading protobuf files!)
  • Synchronization (coming soon, for free!)
  • WebSockets
  • Kafka

3027DB7C-25DD-49C3-B7CA-C0F1CA823276 rest api client grpc client

(back to top)

Built With

(back to top)

Getting started

Prerequisites

(back to top)

Running locally

Once all prerequisites are fulfilled, make sure to run npm install in the wwwroot folder. When you build the solution, the project will automatically run npm run build.

Note: hot reloading does not yet work, but it should be fixed soon.

Installation

Windows

Use the MSIX Installer

Mac Source

Clone the repository and run the dotnet command in the Spacetime project folder.

dotnet build -t:Run -f net6.0-maccatalyst

Mac Binary

Download the zip file and extract the .app

(back to top)

Contributing

Open an issue or tweet me on Twitter with any suggestions or bug reports.

Architecture

The Spacetime MAUI Project uses Fluxor for state management. This means all actions are kicked off using the Dispatcher and handled either in an Effect or a Reducer.

Example:

<button OnClick="Save">Save</button>
@code {
    private void Save()
    {
        Dispatcher.Dispatch(new UpdateRequestAction(Request));
    }
}

This will fire an action, and at the very simplest level, can be handled in a reducer method. However, if this action does anything other than mutate state in a reducer, such as an API call, this will be created in an Effect.

All Actions, Reducers, and Effects are in the Spacetime.Store namespace, organized by "feature."

View the Fluxor documentation for further explanation.

(back to top)

Contact

Chat on Discord or tweet me @codemullins

(back to top)

MS_Startups_Celebration_Badge_Dark