Frontend Source #51
Replies: 7 comments 1 reply
-
|
Thanks a lot for your interest and support in Journiv! You’re absolutely right, Journiv’s core is source available, and it currently includes a built Flutter web version client. Right now, the focus is on stability, refining the experience, and gathering feedback during the beta phase by enabling user to own their memories. As of now there are no plans of making client's source available. |
Beta Was this translation helpful? Give feedback.
-
|
Since a major aim of the project is privacy and users often put sensitive things in journals, it'd be great to be able to verify end to end how the internals work. If the client's source won't be made available, maybe an independent audit or certification of some sort would help to ensure the privacy/security of the app. |
Beta Was this translation helpful? Give feedback.
-
|
Hello @GreenTentacle I can understand your concerns so let me answer them in detail. First thing first, why is frontend code not open source:
Now regarding trust and audit:
Regarding
First of all, most audit or certification possible are of no value as they don't do much. In today's era a user can just take the compiled frontend point any decent AI tool to it and ask it to audit/inspect it and get similar or even better result. AI are very good at reading compiled/minified code. The audits which have any value cost a lot of money. If someone is willing to sponsor such an audit for Journiv, I will jump on the opportunity to get it done. Please let me know if you have any leads. But the good new is that Journiv doesn't just ask for trust; it enforces security through browser using standard protocols.
User themselves can Audit Journiv right now: Network Auditing: User can open their browser’s Developer Tools (Network Tab) at any time. They will see every single outgoing request. They can verify that Journiv is only talking to their backend and not "phoning home" to a third party. Container Isolation: Since user is using Docker, they can run the Journiv container with strict firewall rules. They can block all outbound internet access at the network level, and the app will still function perfectly (except for external assets like Google Fonts which are allowed in CSP as mentioned above). Frontend Transparency: The compiled JS/Wasm code is served directly by user's FastAPI instance. While it is compiled, it is not "hidden." It runs entirely on user hardware, under their visibility. Self hosting is very powerful :) (P.S. It took me ~2 hours putting all these details and to write this whole comment with references. This is the cost of open source :) )
|
Beta Was this translation helpful? Give feedback.
-
|
Here is a concrete test case you can test Journiv's frontend to ensure the CSP defined is valid and working and the Journiv frontend cannot talk to any thing beside what is allowed in the config. This will clearly show any user that there is no data exfiltration which can be done by Journiv frontend. Open your browser dev tool (F12). Open Console and run this You will see something like this A request made for "https://google.com" is blocked. The error clearly states CSP blocks it and why. |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
|
Curious... are you interested in accepting contributions to this project? You have a fairly flushed out set of contribution guidelines, but those contributions are incredibly limited. As an example, I've added the ability to import Journey entries (actually already have the API working and unit/integration tests passing), but am unable to add the frontend option to select the new provider. Having the frontend code not available makes contributions almost impossible. |
Beta Was this translation helpful? Give feedback.
-
|
Hello @mikesir87 Journiv has been designed with backend first approach so all logic lives in backend and is accessible in full functionality through rest apis and now a limited set of features through admin-cli for convenience. Journiv frontend is just a pretty (a guess so? with my limited frontend skills) wrapper on the backend rest api and no logic lives in it beside the minimal required ones and parse and present response. This architectural decision is made to keep the backend open for any client without lose of functionality. You might be aware of some of the details below so apologies in advance for iterating the known. You can access all backend APIs for development and contributions through curl, swagger ui, bruno, postman etc. For example you can go to journiv-domain:port/docs which will show you swagger UI and allow you to upload import file like the Journiv frontend does. You can login with your existing credentials. This will allow you test the import completely without making curl rest api calls with a convenient UI. Also imports are in admin-cli which you can use too https://www.journiv.com/docs/guides/admin-cli if your journey import is large in gbs then using the admin-cli is recommended. If all works out and you decide to contribute back the code please open a PR. Once that is merged I can add another option box in the UI for Journey. Thank you. |
Beta Was this translation helpful? Give feedback.





Uh oh!
There was an error while loading. Please reload this page.
-
Hello. As far as I can tell the frontend flutter source code isn't available, and instead there's compiled js in the source tree. Is there any particular reason for it?
Beta Was this translation helpful? Give feedback.
All reactions