0.2.229 • Published 1 year ago

mufasa v0.2.229

Weekly downloads
3
License
MIT
Repository
github
Last release
1 year ago

Mufasa (Monode's Fullstack Store)

An easy way to connect your database to your UI. (AKA a strongly typed, local-first ORM)

Features:

  • Fully Reactive
  • Supports both documents and files
  • Changes made offline will be synced later
  • Provides good defaults but is highly customizable
  • Should work with any front-end, back-end, or platform (only tested with Solid JS, Firebase, and Capacitor JS so far)

Quick Start

Set Up Mufasa

Install Mufasa via npm i mufasa. To update to the latest version run npm i mufasa@latest.

Import and initialize Mufasa anywhere in your app.

import { initializeMufasa } from "mufasa";
import { solidPersister } from "mufasa/solid-js";
import { capacitorPersister } from "mufasa/capacitor";
import { firebasePersister } from "mufasa/firebase";

export const mfs = initializeMufasa({
  sessionPersister: solidPersister(),
  // Device and cloud persisters are optional.
  devicePersister: capacitorPersister(),
  cloudPersister: firebasePersister(),
});

Define Document Types

Define your document types in any file.

import { prop, list, formula } from "mufasa";

export class Course extends mfs.Doc(`Course`) {
  // Use `prop(TypeClass)` to specify a property that will be saved to the database
  name = prop(String);

  // An initial value can be specified
  description = prop(String, ``);

  // Props can reference document types
  teacher = prop(Teacher);

  // Use `[TypeClass, null]` to define a nullable prop
  teachersAssistant = prop([Student, null], null);

  // Use `list(DocClass)` to define a document list
  readonly students = list(Student);
}

export class Teacher extends mfs.Doc(`Teacher`) {
  firstName = prop(String);
  lastName = prop(String);
  // Use formula to make reactive, read-only props
  readonly fullName = formula(() => `${this.firstName} ${this.lastName}`);

  // `list(DocClass, "propName") can be used to define one-to-many lists
  readonly courses = list(Course, `teacher`);
}

export class Student extends mfs.Doc(`Student`) {
  firstName = prop(String);
  lastName = prop(String);
  readonly fullName = formula(() => `${this.firstName} ${this.lastName}`);

  // `list(DocClass, "propName") to define many-to-many lists
  readonly courses = list(Course, `students`);
}

Use Documents in your UI

import { Teacher } from "./Teacher";
import { Course } from "./Course";
import { For } from "solid-js";

function TeacherUI(teacher: Teacher) {
  return (
    <div>
      {/* Will automatically update when this device or any other device renames the teacher. */}
      <h1>{teacher.fullName}</h1>
      <button
        onClick={() => {
          // Documents must be created using the `create` method
          Course.create({
            name: `Math 101`,
            teacher: teacher,
          });
        }}
      >
        Add Course
      </button>
      <button
        onClick={() => {
          /* Simply assign to a prop and the update will be sent to the database
           * and then to any other mobile devices that are listening. */
          student.lastName = ``;
        }}
      >
        Change Last Name
      </button>
      <For each={teacher.courses}>{(course) => <li>{course.name}</li>}</For>
    </div>
  );
}

See More

That should be enough to get you something useful. For more take a look at the "Deep Dive" section.

Deep Dive

0.2.357

1 year ago

0.2.356

1 year ago

0.2.355

1 year ago

0.2.354

1 year ago

0.2.353

1 year ago

0.2.352

1 year ago

0.2.351

1 year ago

0.2.350

1 year ago

0.2.349

1 year ago

0.2.348

1 year ago

0.2.347

1 year ago

0.2.346

1 year ago

0.2.345

1 year ago

0.2.344

1 year ago

0.0.216

1 year ago

0.0.215

1 year ago

0.0.219

1 year ago

0.0.218

1 year ago

0.0.217

1 year ago

0.0.226

1 year ago

0.0.225

1 year ago

0.0.224

1 year ago

0.0.223

1 year ago

0.0.222

1 year ago

0.0.221

1 year ago

0.0.220

1 year ago

0.2.343

1 year ago

0.2.342

1 year ago

0.2.341

1 year ago

0.2.340

1 year ago

0.2.339

1 year ago

0.2.338

1 year ago

0.2.337

1 year ago

0.2.336

1 year ago

0.2.334

1 year ago

0.2.333

1 year ago

0.2.332

1 year ago

0.2.331

1 year ago

0.2.330

1 year ago

0.2.329

1 year ago

0.2.328

1 year ago

0.2.327

1 year ago

0.2.326

1 year ago

0.2.325

1 year ago

0.2.324

1 year ago

0.2.323

1 year ago

0.2.322

1 year ago

0.2.321

1 year ago

0.2.299

1 year ago

0.2.298

1 year ago

0.2.297

1 year ago

0.2.296

1 year ago

0.2.295

1 year ago

0.2.294

1 year ago

0.2.293

1 year ago

0.2.292

1 year ago

0.2.291

1 year ago

0.2.290

1 year ago

0.2.289

1 year ago

0.2.288

1 year ago

0.2.287

1 year ago

0.2.286

1 year ago

0.2.285

1 year ago

0.2.284

1 year ago

0.2.283

1 year ago

0.2.282

1 year ago

0.2.281

1 year ago

0.2.280

1 year ago

0.2.279

1 year ago

0.2.278

1 year ago

0.2.306

1 year ago

0.2.305

1 year ago

0.2.304

1 year ago

0.2.303

1 year ago

0.2.302

1 year ago

0.2.301

1 year ago

0.2.300

1 year ago

0.2.320

1 year ago

0.2.319

1 year ago

0.2.318

1 year ago

0.2.317

1 year ago

0.2.316

1 year ago

0.2.315

1 year ago

0.2.314

1 year ago

0.2.313

1 year ago

0.2.312

1 year ago

0.2.311

1 year ago

0.2.310

1 year ago

0.2.309

1 year ago

0.2.308

1 year ago

0.2.307

1 year ago

0.2.269

1 year ago

0.2.268

1 year ago

0.2.267

1 year ago

0.2.266

1 year ago

0.2.265

1 year ago

0.2.264

1 year ago

0.2.263

1 year ago

0.2.262

1 year ago

0.2.261

1 year ago

0.2.260

1 year ago

0.2.259

1 year ago

0.2.258

1 year ago

0.2.257

1 year ago

0.2.256

1 year ago

0.2.255

1 year ago

0.2.254

1 year ago

0.2.253

1 year ago

0.2.252

1 year ago

0.2.251

1 year ago

0.2.250

1 year ago

0.2.249

1 year ago

0.2.248

1 year ago

0.2.247

1 year ago

0.2.246

1 year ago

0.2.245

1 year ago

0.2.244

1 year ago

0.2.243

1 year ago

0.2.242

1 year ago

0.2.241

1 year ago

0.2.277

1 year ago

0.2.276

1 year ago

0.2.275

1 year ago

0.2.274

1 year ago

0.2.273

1 year ago

0.2.272

1 year ago

0.2.271

1 year ago

0.2.270

1 year ago

0.2.240

1 year ago

0.2.237

1 year ago

0.2.236

1 year ago

0.2.235

1 year ago

0.2.234

1 year ago

0.2.233

1 year ago

0.2.232

1 year ago

0.2.231

1 year ago

0.2.229

1 year ago

0.2.228

1 year ago

0.2.227

1 year ago

0.2.226

1 year ago

0.2.225

1 year ago

0.2.224

1 year ago

0.2.223

1 year ago

0.2.222

1 year ago

0.2.221

1 year ago

0.2.220

1 year ago

0.2.219

1 year ago

0.2.218

1 year ago

0.2.217

1 year ago

0.2.216

1 year ago

0.2.215

1 year ago

0.2.214

1 year ago

0.2.213

1 year ago

0.2.212

1 year ago

0.2.211

1 year ago

0.2.210

1 year ago

0.2.209

1 year ago

0.2.208

1 year ago

0.2.207

1 year ago

0.2.206

1 year ago

0.2.205

1 year ago

0.2.204

1 year ago

0.2.203

1 year ago

0.2.202

1 year ago

0.2.201

1 year ago

0.2.199

1 year ago

0.2.198

1 year ago

0.2.197

1 year ago

0.2.196

1 year ago

0.2.195

1 year ago

0.2.194

1 year ago

0.2.193

1 year ago

0.2.200

1 year ago

0.2.192

1 year ago

0.2.189

1 year ago

0.2.188

1 year ago

0.2.187

1 year ago

0.2.186

1 year ago

0.2.185

1 year ago

0.2.190

1 year ago

0.2.184

1 year ago

0.2.183

1 year ago

0.2.182

1 year ago

0.2.181

1 year ago

0.2.180

1 year ago

0.2.179

1 year ago

0.2.178

1 year ago

0.2.177

1 year ago

0.2.176

1 year ago

0.2.175

1 year ago

0.2.174

1 year ago

0.2.173

1 year ago

0.2.172

1 year ago

0.2.171

1 year ago

0.2.170

1 year ago

0.2.169

1 year ago

0.2.168

1 year ago

0.2.167

1 year ago

0.2.166

1 year ago

0.2.165

1 year ago

0.2.164

1 year ago

0.2.163

1 year ago

0.2.162

1 year ago

0.2.161

1 year ago

0.2.160

1 year ago

0.2.159

1 year ago

0.2.158

1 year ago

0.2.157

1 year ago

0.2.156

1 year ago

0.2.155

1 year ago

0.2.154

1 year ago

0.2.153

1 year ago

0.2.152

1 year ago

0.2.151

1 year ago

0.2.150

1 year ago

0.2.149

1 year ago

0.2.148

1 year ago

0.2.147

1 year ago

0.2.146

1 year ago

0.2.145

1 year ago

0.2.144

1 year ago

0.2.143

1 year ago

0.2.141

1 year ago

0.2.140

1 year ago

0.2.139

1 year ago

0.2.138

1 year ago

0.2.137

1 year ago

0.2.136

1 year ago

0.2.135

1 year ago

0.2.132

1 year ago

0.2.131

1 year ago

0.2.130

1 year ago

0.2.129

1 year ago

0.2.128

1 year ago

0.2.127

1 year ago

0.2.126

1 year ago

0.2.125

1 year ago

0.2.124

1 year ago

0.2.123

1 year ago

0.2.122

1 year ago

0.2.121

1 year ago

0.2.120

1 year ago

0.2.118

1 year ago

0.2.117

1 year ago

0.2.116

1 year ago

0.2.115

1 year ago

0.2.114

1 year ago

0.2.113

1 year ago

0.2.112

1 year ago

0.2.111

1 year ago

0.2.110

1 year ago

0.2.109

1 year ago

0.2.108

1 year ago

0.2.107

1 year ago

0.2.106

1 year ago

0.2.105

1 year ago

0.2.104

1 year ago

0.2.103

1 year ago

0.2.102

1 year ago

0.2.96

2 years ago

0.2.99

2 years ago

0.2.98

2 years ago

0.2.97

2 years ago

0.2.101

2 years ago

0.2.100

2 years ago

0.2.95

2 years ago

0.2.94

2 years ago

0.2.93

2 years ago

0.2.92

2 years ago

0.2.91

2 years ago

0.2.90

2 years ago

0.2.89

2 years ago

0.2.88

2 years ago

0.2.87

2 years ago

0.2.85

2 years ago

0.2.86

2 years ago

0.2.83

2 years ago

0.2.82

2 years ago

0.2.81

2 years ago

0.2.80

2 years ago

0.2.79

2 years ago

0.2.78

2 years ago

0.2.77

2 years ago

0.2.76

2 years ago

0.2.74

2 years ago

0.2.73

2 years ago

0.2.72

2 years ago

0.2.71

2 years ago

0.2.70

2 years ago

0.2.75

2 years ago

0.2.63

2 years ago

0.2.62

2 years ago

0.2.61

2 years ago

0.2.60

2 years ago

0.2.69

2 years ago

0.2.68

2 years ago

0.2.67

2 years ago

0.2.66

2 years ago

0.2.65

2 years ago

0.2.64

2 years ago

0.2.52

2 years ago

0.2.51

2 years ago

0.2.50

2 years ago

0.2.59

2 years ago

0.2.58

2 years ago

0.2.57

2 years ago

0.2.56

2 years ago

0.2.55

2 years ago

0.2.54

2 years ago

0.2.53

2 years ago

0.2.41

2 years ago

0.2.40

2 years ago

0.2.49

2 years ago

0.2.48

2 years ago

0.2.47

2 years ago

0.2.46

2 years ago

0.2.45

2 years ago

0.2.44

2 years ago

0.2.43

2 years ago

0.2.42

2 years ago

0.2.39

2 years ago

0.2.30

2 years ago

0.2.38

2 years ago

0.2.37

2 years ago

0.2.36

2 years ago

0.2.34

2 years ago

0.2.33

2 years ago

0.2.32

2 years ago

0.2.31

2 years ago

0.2.27

2 years ago

0.2.26

2 years ago

0.2.25

2 years ago

0.2.24

2 years ago

0.2.23

2 years ago

0.2.22

2 years ago

0.2.21

2 years ago

0.2.20

2 years ago

0.2.19

2 years ago

0.2.18

2 years ago

0.2.17

2 years ago

0.0.205

2 years ago

0.0.204

2 years ago

0.0.203

2 years ago

0.0.202

2 years ago

0.0.209

2 years ago

0.0.208

2 years ago

0.0.207

2 years ago

0.0.206

2 years ago

0.2.16

2 years ago

0.2.15

2 years ago

0.2.14

2 years ago

0.2.13

2 years ago

0.2.12

2 years ago

0.0.201

2 years ago

0.2.11

2 years ago

0.0.200

2 years ago

0.2.10

2 years ago

0.0.214

2 years ago

0.0.213

2 years ago

0.0.212

2 years ago

0.0.211

2 years ago

0.0.197

2 years ago

0.0.196

2 years ago

0.0.195

2 years ago

0.0.194

2 years ago

0.0.199

2 years ago

0.0.198

2 years ago

0.2.1

2 years ago

0.2.0

2 years ago

0.2.29

2 years ago

0.2.28

2 years ago

0.2.7

2 years ago

0.2.6

2 years ago

0.2.9

2 years ago

0.2.8

2 years ago

0.2.3

2 years ago

0.2.2

2 years ago

0.2.5

2 years ago

0.2.4

2 years ago

0.0.193

2 years ago

0.0.192

2 years ago

0.0.191

2 years ago

0.0.190

2 years ago

0.0.189

2 years ago

0.0.188

2 years ago

0.0.187

2 years ago

0.0.159

2 years ago

0.0.158

2 years ago

0.0.153

2 years ago

0.0.152

2 years ago

0.0.151

2 years ago

0.0.150

2 years ago

0.0.157

2 years ago

0.0.156

2 years ago

0.0.155

2 years ago

0.0.154

2 years ago

0.0.128

2 years ago

0.0.127

2 years ago

0.0.126

2 years ago

0.0.169

2 years ago

0.0.125

2 years ago

0.0.164

2 years ago

0.0.163

2 years ago

0.0.162

2 years ago

0.0.161

2 years ago

0.0.168

2 years ago

0.0.167

2 years ago

0.0.166

2 years ago

0.0.165

2 years ago

0.0.160

2 years ago

0.0.139

2 years ago

0.0.138

2 years ago

0.0.137

2 years ago

0.0.136

2 years ago

0.0.175

2 years ago

0.0.131

2 years ago

0.0.174

2 years ago

0.0.130

2 years ago

0.0.173

2 years ago

0.0.172

2 years ago

0.0.179

2 years ago

0.0.135

2 years ago

0.0.178

2 years ago

0.0.134

2 years ago

0.0.177

2 years ago

0.0.133

2 years ago

0.0.176

2 years ago

0.0.132

2 years ago

0.0.171

2 years ago

0.0.170

2 years ago

0.0.148

2 years ago

0.0.147

2 years ago

0.0.186

2 years ago

0.0.142

2 years ago

0.0.185

2 years ago

0.0.141

2 years ago

0.0.184

2 years ago

0.0.140

2 years ago

0.0.183

2 years ago

0.0.146

2 years ago

0.0.145

2 years ago

0.0.144

2 years ago

0.0.143

2 years ago

0.0.182

2 years ago

0.0.181

2 years ago

0.0.180

2 years ago

0.0.117

2 years ago

0.0.116

2 years ago

0.0.115

2 years ago

0.0.114

2 years ago

0.0.119

2 years ago

0.0.118

2 years ago

0.0.113

2 years ago

0.0.112

2 years ago

0.0.111

2 years ago

0.0.110

2 years ago

0.0.106

2 years ago

0.0.105

2 years ago

0.0.104

2 years ago

0.0.103

2 years ago

0.0.109

2 years ago

0.0.108

2 years ago

0.0.107

2 years ago

0.0.102

2 years ago

0.0.101

2 years ago

0.0.100

2 years ago

0.0.98

2 years ago

0.0.99

2 years ago

0.0.80

2 years ago

0.0.3

10 years ago

0.0.2

10 years ago