Fifthtry

A Bit On Motivation

Before we go further, let us ruminate on why was Realm created, who is it for etc.

Realm was created at, and powers bulk of Acko.com starting about March 2018, with awesome contributions from Jatinder(Tinder), Gagan, Saleem, Sonali, Raka and Sourabh. Later on Abrar and Swapnil made it even better (read: opensource-able).

Before Realm, we used to be big fans of Django, which in our experience quite lives up to its tagline: the framework for perfectionists with deadlines.

We needed something faster (runtime), and after a misadventure with Go, which showed us a benefits of type-system (and compiler actually for once helping you!), we realised we wanted to use Rust and Elm.

Realm was our answer to quest of the holy grail: as productive as Django, and as fast as Rust allows at runtime, and Elm: for we were really getting spoilt.

One question we have asked ourselves often is: are we like Django or Flask? Django/Ruby on Rails are opinionated frameworks, that try to do everything for you, so you can focus on what is unique for you. Flask/Actix on the other hand, give you basic utilities to create your own solutions.

We are fond of Django/RoR approach. We have a big-ish team, people are coming and going, and we have seen that opinions do not scale. In React there are 100 ways to do something, and nobody knows what are the tradeoff, and things change fast. We think this is not great for us.

We wanted a “right-way” to do web development. We are far from it, but Realm is our current answer.

From time to time you will see we picked as fast as Django (ease of development) over as fast as Rust (sheer runtime performance) - if we had to chose.

Side Note: You will see Realm is sync, and Rust is going gaga over async these days. Sync makes things easy, and is still blazing fast. We know how to do it well. Async, we will wait and watch.

Enough talk, start with quick start tutorial.

Table Of Content

What is Realm?

A Bit On Motivation

Routing is Hard

What does Realm do?

Backend Data And Type Safety

Tutorial

Quick Start Realm Tutorial

In Depth Tutorial (not ready)

Nix
Shell
Doit
Hello Rust
Hello Elm
Hello Static Files
Hello Server Side Rendering
Pre-Commit Hooks

Routing, Request And Response

Frontend, Data, Navigation, And APIs

How To Guides

File Upload

Backend: S3 File Upload
Authenticated File Serving
Frontend: Uploading Files From Elm

How to use storybook?

How to implement “loading..”?

Docs

Realm.In

Realm.Storybook.Story

realm::In

realm::Context

realm::Result

realm::RequestConfig

Environment Variables

Internals - Only for Realm Developers, not Users

“Realm DATA”
iFrame Controller
Shutdown Routine

Change Log

Get Realm Starter Working

Transparent Offline Feature

How to make http requests in Realm?

Development

Tutorial: ToDo App

Enhance Realm Starter

Double Load Issue

Deploy To Heroku Button

End failure

Realm-Starter Github Template

Proposal: Activity Store

Proposal: Bundling

Proposal: Retry On Network Error

Storybook: Editable JSON

Storybook: Notes

Storybook: Reference

Backlog

Readings

Change Log

How to Publish

Testing

Code Snippets

Skip rustfmt For Some Section

Close Modal Dialog When Clicked Outside

Ignoring Lints In Python

Ignoring Lints (clippy and rustc warnings) In Rust

Handle DateTime in Rust & Elm

Handle CiText value read in Rust