a hypothetical permanent change in the brain accounting for the existence of memory; a memory trace.
An open source application for quickly gathering thoughts.
Help educate others (and myself) on how to build software applications.
The core functionality of engram is simply the ability to capture and store text. This has become my defacto "Hello World" application when testing out a new language, library, or framework. Once I feel I have enough knowledge with a specific technology, that code will find it's way into this repository.
To support this mission, the folder structure is organized to separate the app into major areas.
The backend is currently a REST api built with Node.js on top of the express web framework. I've spent very little energy in this realm, focusing significantly more on frontend clients for now. In the future, I will add new languages and frameworks here.
There are several frontend clients available for engram. Each one may have slightly different functionality based on how far along that project is, or whether the target platform has additional functionality. This helps showcase when it's useful to specifically target a platform vs. building something generic.
This is the original engram client. This is the technology stack I have the most comfort with, which is why I started here. This client powers the offical engram web app.
This is a react-native app built using expo. This is the build used for the Offical Google Play app. The Play Store version will soon be replaced by a native Android application.
This is a Swift 5 native iOS application. This is the client used for the official engram iOS app.
I knew early on I wanted a CLI for engram. engram is about quickly capturing thoughts, and I can think of no other place that is as quick as the command line. The cli is currently built in Rust.
eg
is the online enabled version of the CLI. It syncs with the web version of engram so anything captured on the command line can be viewed on your other devices. I wrote an in depth article about the start of this project here.
ego
is an offline version of engram. I'm currently using this to learn more about Rust while also writing tutorials about it. Some of this work may get merged in with eg to make it possible to work offline while eventually syncing items. I still believe there is a strong enough case for a fully offline version, so ego
should remain as the place to put information you don't want accessing the Internet.
WIP
WIP
The primary website https://engram.xyzdigital.com runs the web/react
frontend and api
for the REST API. engram has primarily developed with Node 14, but should work with future ones as well without issue.
cd clients/web/react
yarn
yarn start
If successful this should open http://localhost:3000 in your browser
A local installation of mongodb community server is recommended. If you would prefer to use a hosted mongodb instance, you will just have to update the DB_URL
below accordingly.
You will need to create a .env
file inside the api
folder:
DB_URL=mongodb://localhost:27017/engram
JWT_SECRET={Insert random string of characters}
Then you can start the express server with:
cd api
yarn
yarn start