All Projects → thesephist → mira

thesephist / mira

Licence: MIT license
A place for notes, but for the people I keep in touch with

Programming Languages

javascript
184084 projects - #8 most used programming language
CSS
56736 projects
go
31211 projects - #10 most used programming language
HTML
75241 projects
Makefile
30231 projects

Projects that are alternatives of or similar to mira

Vue Crud
Vue.js based REST-ful CRUD system
Stars: ✭ 629 (+535.35%)
Mutual labels:  single-page-app, crm
Suitecrm
SuiteCRM - Open source CRM for the world
Stars: ✭ 2,770 (+2697.98%)
Mutual labels:  contacts, crm
Yetiforcecrm
Our team created for you one of the most innovative CRM systems that supports mainly business processes and allows for customization according to your needs. Be ahead of your competition and implement YetiForce!
Stars: ✭ 1,056 (+966.67%)
Mutual labels:  contacts, crm
logtacts
Better contact management.
Stars: ✭ 54 (-45.45%)
Mutual labels:  contacts, crm
White-Jotter-Vue
Front end of White Jotter.
Stars: ✭ 114 (+15.15%)
Mutual labels:  single-page-app
blog
Pixelhandler's Blog
Stars: ✭ 33 (-66.67%)
Mutual labels:  single-page-app
permacoop
Open source and eco design ERP solution reserved for worker-owned business.
Stars: ✭ 167 (+68.69%)
Mutual labels:  crm
codeframe
The fastest, easiest way to build and deploy quick static webpages
Stars: ✭ 107 (+8.08%)
Mutual labels:  torus-dom
url
Build and parse URLs. Useful for HTTP and "routing" in single-page apps (SPAs)
Stars: ✭ 69 (-30.3%)
Mutual labels:  single-page-app
Whatsapp Android App
This is sample code for layout for chatting app like Whatsapp.
Stars: ✭ 32 (-67.68%)
Mutual labels:  contacts
FoodDelivery
E-Commerce demo project. Food delivery application project made with.
Stars: ✭ 106 (+7.07%)
Mutual labels:  crm
IEvangelist.VideoChat
Imagine two Twilio SDKs, ASP.NET Core/C#, Angular/TypeScript, SignalR, etc... Yeah, amazing!
Stars: ✭ 66 (-33.33%)
Mutual labels:  single-page-app
corebos
core Business Operating System. An OPEN SOURCE business application that helps small and medium business handle all the day to day tasks.
Stars: ✭ 128 (+29.29%)
Mutual labels:  crm
personal-crm
🗂 Minimalist personal CRM to keep in touch with contacts
Stars: ✭ 23 (-76.77%)
Mutual labels:  crm
active-directory-b2c-javascript-hellojs-singlepageapp
A single page app, implemented with an ASP.NET Web API backend, that signs up & signs in users using Azure AD B2C and calls the web API using OAuth 2.0 access tokens.
Stars: ✭ 63 (-36.36%)
Mutual labels:  single-page-app
mangastack
Front-end web client for MangaDex. Previously hosted at https://mangastack.cf/
Stars: ✭ 23 (-76.77%)
Mutual labels:  single-page-app
SPA-With-Blazor
Creating a Single Page Application with Razor pages in Blazor using Entity Framework Core database first approach.
Stars: ✭ 27 (-72.73%)
Mutual labels:  single-page-app
webogram
Telegram web application, GPL v3
Stars: ✭ 7,752 (+7730.3%)
Mutual labels:  single-page-app
hoffnung3000
Platform for decentralized, anonymized, self-curated festivals
Stars: ✭ 27 (-72.73%)
Mutual labels:  single-page-app
Blazor-CRUD-With-CloudFirestore
Single Page Application (SPA) using Blazor with the help of Google Cloud Firestore as Database provider
Stars: ✭ 34 (-65.66%)
Mutual labels:  single-page-app

Mira ☎️

Mira is a personal contacts manager for myself, built for my workflow. A place for notes, but for the people I keep in touch with. It's built with Torus on the frontend as a single-page app and a lightweight Go backend.

Mira is designed for quick actions and references to people I've met, and things I want to remember about those people. It looks like this in action:

Mira on desktop

In particular, in addition to normal contact info you see in every app, Mira is capable of storing a few specific kinds of data I like to remember about people:

  • past meetings ("mtg"): where are all the places I've met this person, in which occasion, and what did we talk about that I want to remember?
  • last met ("last"): when did we last talk? This is useful when I want to follow up with people I haven't talked to in too long.
  • place: what city do they live in? This is useful for remembering to visit people I haven't seen in a while whenever I visit a city for the first time in some time.
  • unstructured notes: things like extracurricular or volunteering involvements, event attendance, hobbies, and other extraneous information that's useful to know, but not trivial.

If you want to try Mira, there's a fork of Mira here that you can one-click deploy on Deta!

⚠️ Mira is a prototype ⚠️

This current version of Mira is a "rough draft" of sorts. Eventually, I hope to write a version of Mira that's fast, efficient, and works exactly the way I want my workflow to be. But a problem here is that I'm not even 100% sure what that workflow looks like yet -- I've never had anything that worked super well for me, so my current workflow is pretty ad-hoc and haphazard.

The main point of this first version of Mira is to have a tool that works well, and is a close approximation of an ideal interface, but where I can iterate on the data models and structures / interface quickly to find that ideal workflow, for a second revision, which will probably be written in Ink as a part of the Polyx software suite.

Architecture

Mira is a mostly-static application on the backend with a single dynamic API endpoint, /data, which just stores and makes available a JSON blob for the frontend. This data is managed entirely by the frontend, for quick iteration speed whenever I want to change the data schema. Mira's current version explicitly doesn't use SQLite3 or another relational DB for this reason.

The frontend application is a pretty vanilla Torus application. The core of the Contact data model is stored in the Contact record class:

class Contact extends Record {

    singleProperties() {
        return [
            // [ui label, property name, placeholder, use <textarea>?]
            ['name', 'name', 'name'],
            ['place', 'place', 'place'],
            ['work', 'work', 'work'],
            ['twttr', 'twttr', '@username'],
            ['last', 'last', 'last met...'],
            ['notes', 'notes', 'notes', true],
        ];
    }

    multiProperties() {
        return [
            ['tel', 'tel', 'tel'],
            ['email', 'email', 'email'],
            ['mtg', 'mtg', 'meeting', true],
        ]
    }

}

Given this schema specified on the model, the rest of the application is designed to compose naturally to result in an editing and viewing interface that suits the schema for each contact item. Adjusting this schema automatically adapts the application to store new kinds of data about each contact, which allows me to tweak and experiment with the exact data format quickly.

In other words, given this schema, the interface shown in the screenshot in this README above is automatically generated by the UI. As we add new fields to the schema, the UI will automatically adapt to include them. This is the core of this, Mira v0.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].