๐ฑ Iโm currently learning:
๐ญ Iโm currently working on:
- Building a web application with Rust
Life/self managment software
Home Page: https://chronilore.github.io
License: Mozilla Public License 2.0
๐ฑ Iโm currently learning:
๐ญ Iโm currently working on:
The rules used to guide all design in the application.
Mostly focused on the web design for now.
How to manage database/schema changes
For version 1 of the product, I'm thinking the chronicle view will be the main functionality available to users.
A user interface is needed. There are some new ways to build web apps using Rust and WebAssembly that would remove the need to directly write JavaScript, which I would personally prefer.
Currently the plan is to implement a web interface using one of the following Rust web front-end frameworks:
Runtimes --
Async --
WebAssembly --
Docker --
WebAssembly --
Concurrency --
The chrono crate has a vulnerability listed below:
Crate: chrono
Version: 0.4.19
Title: Potential segfault in `localtime_r` invocations
Date: 2020-11-10
ID: RUSTSEC-2020-0159
URL: https://rustsec.org/advisories/RUSTSEC-2020-0159
Solution: No safe upgrade is available!
I've read that it will most likely not be resolved soon, and therefore it should be replaced and any related functionality should be refactored.
Alternatives to chrono:
I think it would be good to write out all the features of the application.
Feature in this context means something along the lines of "distinguishing characteristic of a software item (e.g., performance, portability, or functionality)".
Any person that wants to use the application must first register themselves with the application's database.
In order for them to do that, they need a user interface to interact with the application.
The user interface must be able to collect the following information from the user:
Users have to authenticate their identity with the server before they are able to start accessing their account.
fido2 has the client to authenticator protocol (CTAP) which allows the use of a cryptographic authenticator (such as a smartphone or a hardware security key) as a form of identity verification.
I personally have a YubiKey so I would like to try using it to authenticate myself as well.
Will almost certainly use an external library for the main implementation of CTAP.
Learning how to implement this protocol is outside the scope of this project.
I saw a couple crates that might be usable for this functionality within loremaster.
Hey, this looks like a really cool project, and your roadmap for it looks fantastic! It might be worth taking a look at Emacs' Org Mode, if you haven't already, with regards to keyboard shortcuts and linking support. Org Roam in particular is a system that allows one to create a Zettelkasten in plaintext markup files that can link to each other, with each file (and/or heading therein) having arbitrary properties, like IDs. A similar system could be very powerful in this app, especially for your stated goal of supporting personal wikis. Particularly, I think a lot of prospective users might value an arbitrary properties system on whatever your equivalent of headings ends up being (e.g. the same as Org, being headings in files, or perhaps files alone, with some kind of Xanadu-like transclusion system), which would allow node IDs to be exposed to users for building their own extensions on top of your app. For instance, I've built a system on top of Org Roam for myself that lets me link nodes together with uplinks (links to nodes that might inform this node) and downlinks (links to nodes that this node might inform), which allows a more fine-grained linking system. Rather than building that kind of very specific feature yourself, it might be a good idea to support user-accessible and visible metadata for 'power users' to create their own custom workflows. (I see from #71 that this kind of thing is possibly already in your mind.)
Again, these are all just suggestions, so please feel free to utterly disregard everything I've just said! Hopefully some of it will be useful to you though! (Feel free to close this issue whenever you like.)
Side note: as the maintainer of Perseus, I'm very happy to help with any issues you may have on that front!
Ability to configure various parts of the application without updating the code directly.
Having a way to configure parts of the application without changing the actual code is beneficial.
For example being able to configure the port that the application is running on for different environments such as local or production.
A list of resources, can be links
This is where a list of options can be created.
Since the application's functionality would benefit from more information about the user, it might make sense to have a page dedicated to meta-data about the user themselves.
Ideas:
Continuous Integration (CI) is the practice of merging all developers' working copies to a shared main several times a day.
It would probably be good for this project to use some form of software versioning.
At a fine-grained level, revision control is often used for keeping track of incrementally-different versions of information, whether or not this information is computer software. - Wikipedia
Documentation helps those unfamiliar with the project/application become more familiar with it.
It can also be used to provide explanation for the reasoning behind certain decisions and implementations.
This can also keep the developers honest and improve their own understanding of why the project is the way it is.
Can the front-end style of perseus be used with tailwind?
I have seen examples of using perseus + tailwind, are there some features of tailwind that cannot be achieved?
The app seems a nice showcase for Perseus framework, but it's missing any "getting started" information, such as Rust and Perseus versions, and what commands are to run (I suppose it's perseus serve
).
Add Web Authentication API as an option for user registration and authentication.
This feature allows users to use a security key or bio-metric in order to authenticate, as an alternative to a password.
Currently the application architecture is that of a web application.
The current architecture stores user data in a database running on servers not owned or managed by the users.
This means that users are unable to ensure that their data is secure themselves and therefore they must rely on the host of the application and database.
While in the future there may be additional implementations of the application that allow the user to utilize it's features without relying on external parties, currently the application host holds responsibility for almost all security of the user's data.
One way to protect user data is to use encryption to prevent anyone from reading it.
Using a key derivation function the encryption can be locked using the user's password as a key.
Currently argon2 is being used to encrypt user passwords.
Currently the project is using mobc for postgresql database connections/pooling.
The quality of this dependency should be analyzed and possibly refactored if it is deemed not the best choice in the long term.
Databases are a common and effective way to retain information that is entered into the application.
Databases take on various forms and have a variety of different implementations.
PocketBase uses SQLite and embeds it into the back-end as a single executable. It runs in write ahead logging (WAL) to improve performance (in specific contexts with trade-offs).
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.