The first project update:
Code
In the past week, I’ve achieved the following:
- Ported from Svelte to Vue, as I’m more familiar with it
- Began to mock the SAFE browser API so that I can test directly in Google Chrome
- Added a caching layer
- Added the creation of FilesContainers
- Added the creation of NRS
- Created an RFC to fill in some missing browser functionality: RFC0060 - Enable creating and modifying of FilesContainers within the SAFE browser environment
End user experience
In terms of user interface, the following screens have been added. (These are all fully coded, these are not Photoshop mockups, but screenshots of actual code running in an actual browser)
We don’t have a home page yet, so it defaults to the NRS domain listing page, once we have more of the app built I’ll add a nice home page, but for now it would just be grandiosity for no reason:
You can create a top level NRS (it defaults to using the default www
sub name at the moment, since that’s what the majority of people will likely be using, but I’ll be adding the ability to manage sub names in the next week.):
You can select which domain you would like to edit the posts for, allowing users to manage multiple websites from within the web app (when you create an NRS, it will default to editing that one, I’ve set this up just to show you):
Once an NRS is selected, it will default to that NRS until changed - even between refreshing, restarting your PC, etc.
A lot of the design work here is wire-frame-ish and is subject to change.
Design decisions
It’s important to me to reduce the amount of dependencies both in this website and in the websites generated by it.
I’m probably going to be doing something like the following:
- The websites generated by the app will be single-page-applications, using hash routing (why hash routing? It means that each post doesn’t need to be re-updated if there are any backwards compatibility changes, or changes to themes, or plugins, etc. A central store of code in the root of the public name is much easier to manage within the SAFE network).
- this will probably be something which can be optionally disabled (by people who understand the PUT / GET cost ramifications, and the performance costs), but seems like a reasonable default.
I’d really like it if the Phantom website itself was less than 180kb fully downloaded (as a single page application, containing all CSS, JS, HTML and woff2 files required for the entire app to function). I’m not using any images, only using a single font (OpenSans, and only Woff2 files since they are nice, tiny and supported by all the target browsers), and cutting out any unnecessary dependencies - even if it means more effort from me. The first websites on the SAFE network need to load blazingly fast to overcome any potential scaling issues in the future.