0.2.229 • Published 11 months ago

mufasa v0.2.229

Weekly downloads
3
License
MIT
Repository
github
Last release
11 months 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

11 months ago

0.2.356

11 months ago

0.2.355

11 months ago

0.2.354

11 months ago

0.2.353

11 months ago

0.2.352

11 months ago

0.2.351

11 months ago

0.2.350

11 months ago

0.2.349

11 months ago

0.2.348

11 months ago

0.2.347

11 months ago

0.2.346

11 months ago

0.2.345

11 months ago

0.2.344

11 months ago

0.0.216

1 year ago

0.0.215

1 year ago

0.0.219

12 months ago

0.0.218

1 year ago

0.0.217

1 year ago

0.0.226

12 months ago

0.0.225

12 months ago

0.0.224

12 months ago

0.0.223

12 months ago

0.0.222

12 months ago

0.0.221

12 months ago

0.0.220

12 months ago

0.2.343

12 months ago

0.2.342

12 months ago

0.2.341

12 months ago

0.2.340

12 months ago

0.2.339

12 months 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

1 year ago

0.2.99

1 year ago

0.2.98

1 year ago

0.2.97

1 year ago

0.2.101

1 year ago

0.2.100

1 year ago

0.2.95

1 year ago

0.2.94

1 year ago

0.2.93

1 year ago

0.2.92

1 year ago

0.2.91

1 year ago

0.2.90

1 year ago

0.2.89

1 year ago

0.2.88

1 year ago

0.2.87

1 year ago

0.2.85

1 year ago

0.2.86

1 year ago

0.2.83

1 year ago

0.2.82

1 year ago

0.2.81

1 year ago

0.2.80

1 year ago

0.2.79

1 year ago

0.2.78

1 year ago

0.2.77

1 year ago

0.2.76

1 year ago

0.2.74

1 year ago

0.2.73

1 year ago

0.2.72

1 year ago

0.2.71

1 year ago

0.2.70

1 year ago

0.2.75

1 year ago

0.2.63

1 year ago

0.2.62

1 year ago

0.2.61

1 year ago

0.2.60

1 year ago

0.2.69

1 year ago

0.2.68

1 year ago

0.2.67

1 year ago

0.2.66

1 year ago

0.2.65

1 year ago

0.2.64

1 year ago

0.2.52

1 year ago

0.2.51

1 year ago

0.2.50

1 year ago

0.2.59

1 year ago

0.2.58

1 year ago

0.2.57

1 year ago

0.2.56

1 year ago

0.2.55

1 year ago

0.2.54

1 year ago

0.2.53

1 year ago

0.2.41

1 year ago

0.2.40

1 year ago

0.2.49

1 year ago

0.2.48

1 year ago

0.2.47

1 year ago

0.2.46

1 year ago

0.2.45

1 year ago

0.2.44

1 year ago

0.2.43

1 year ago

0.2.42

1 year ago

0.2.39

1 year ago

0.2.30

1 year ago

0.2.38

1 year ago

0.2.37

1 year ago

0.2.36

1 year ago

0.2.34

1 year ago

0.2.33

1 year ago

0.2.32

1 year ago

0.2.31

1 year ago

0.2.27

1 year ago

0.2.26

1 year ago

0.2.25

1 year ago

0.2.24

1 year ago

0.2.23

1 year ago

0.2.22

1 year ago

0.2.21

1 year ago

0.2.20

1 year ago

0.2.19

1 year ago

0.2.18

1 year ago

0.2.17

1 year ago

0.0.205

1 year ago

0.0.204

1 year ago

0.0.203

1 year ago

0.0.202

1 year ago

0.0.209

1 year ago

0.0.208

1 year ago

0.0.207

1 year ago

0.0.206

1 year ago

0.2.16

1 year ago

0.2.15

1 year ago

0.2.14

1 year ago

0.2.13

1 year ago

0.2.12

1 year ago

0.0.201

1 year ago

0.2.11

1 year ago

0.0.200

1 year ago

0.2.10

1 year ago

0.0.214

1 year ago

0.0.213

1 year ago

0.0.212

1 year ago

0.0.211

1 year ago

0.0.197

1 year ago

0.0.196

1 year ago

0.0.195

1 year ago

0.0.194

1 year ago

0.0.199

1 year ago

0.0.198

1 year ago

0.2.1

1 year ago

0.2.0

1 year ago

0.2.29

1 year ago

0.2.28

1 year ago

0.2.7

1 year ago

0.2.6

1 year ago

0.2.9

1 year ago

0.2.8

1 year ago

0.2.3

1 year ago

0.2.2

1 year ago

0.2.5

1 year ago

0.2.4

1 year 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