0.2.229 • Published 12 months ago

mufasa v0.2.229

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

12 months ago

0.2.356

12 months ago

0.2.355

12 months ago

0.2.354

12 months ago

0.2.353

12 months ago

0.2.352

12 months ago

0.2.351

12 months ago

0.2.350

12 months ago

0.2.349

12 months ago

0.2.348

12 months ago

0.2.347

12 months ago

0.2.346

12 months ago

0.2.345

12 months ago

0.2.344

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

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

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