DeveloPassion's Newsletter #176 - Introducing Knowii
Edition 176 of my newsletter, introducing Knowii, discussing Knowledge Management, Knowledge Work, Zen Productivity, Personal Organization, and more!
Welcome
Another week, another newsletter! I hope that you all had a great one 🤩
Hi everyone. It's been a while. I missed you A LOT, but couldn't find the energy to reach out to you all. As you know, I've been quite busy during the last few weeks. We're still working at home, trying to fix the ground floor, the water pipes, the tiles, etc. It's been really tiresome. But we're almost there.
But hey, I have tons of work to do, and even if I'm working "in the shadows", I have important news to share!
Alright, let's gooooo 🚀
The lab 🧪
First, the bad news: I have not made progress on the Knowledge Management course. I was not in the right conditions to do so, and my house is a mess, so I can't record the videos. I will resume work on the course as soon as we're done fixing our home.
Given the situation, I decided to focus on Knowii, a major project I've been pushing back since a long while. I'll tell you everything in the next section.
Other than that, pretty much all my projects are on hold, and I haven't made any progress toward making my company safe (i.e., default-alive):
But it's okay. I've made up my mind, and I'm ready to invest a bit more of my savings into this adventure. Because I care, and because I think you care too.
Knowii - What & Why
Knowii is going to be a Knowledge Management platform for communities and individuals. Here's how I initially introduced the project:
My vision for it hasn't changed much since then. I want Knowii to help people discover new topics, figure out what to learn, from whom, and get access to the most valuable knowledge "effortlessly". In addition, I want Knowii to become a valuable home for everyone's personal knowledge, and to integrate it tightly with the rest of the Knowledge Management ecosystem (e.g., with tools such as Obsidian).
I have previously described the "phases" for the project:
Again, I haven't changed my mind. I strongly believe Knowii first needs to focus on communities, and then to expand into Personal Knowledge Management as well.
Knowii - Open Source
One major thing that has changed since my initial announcements is the business model. I have decided to make Knowii a fully Open Source platform.
The source code behind Knowii is, and will remain available under the terms of the AGPL open source license. The project is already on GitHub:
The biggest benefit of building this in the open is that Knowii is here to stay. Whatever I decide, what has been open sourced will remain. It's not going to be one of those products that disappear and leave users in misery.
I will host and manage a central version on knowii.net, but since the platform is open source, anyone will be able to:
- Self-host on their own infrastructure
- Contribute to improving the platform
My hope is that the central version will accumulate enough users and content to become "the place to be", reducing the usefulness/utility of spinning up your own instance.
Knowii - Pieces of the puzzle
I have big plans for the future of Knowii. But I have to start small. And I'm going to need your help to shape Knowii in the right way.
Right now, I consider the following concepts as central for the first versions (green and orange ones):
- Each user will be able to join public/private communities to discover, and share resources. Community owners/administrators will be able to invite users, manage members, etc
- Communities will contain collections of resources (i.e., resource collections will be the main organization unit within a community)
- Resource collections will contain resources (e.g., links to articles, books, videos, etc)
- Each resource will be mapped to one or more "persons", which you can think of as public profiles for users, but could also represent people who are not using the platform (e.g., famous authors)
- Users will all have a personal space in which they'll also be able to create collections and store resources
- Users will be able to keep track of the resources they've read/watched/consumed, their votes, favorites, etc
This is what I will focus on for the first phase of the project.
Later on, my goal will be to expand features around resources (e.g., add tags, a voting system, user summaries, AI-generated summaries, etc), build integrations with other platforms, and expand what users can do with their personal space.
I have a clear vision about the elements ahead, but I have to take things one step at a time:
Knowii - The technology
Since the project was on hold for so long, the technical stack has suffered a lot. The unfortunate aspect of using tools in the Node/JS/TS ecosystem is that (almost) everything becomes obsolete after a week (or less).
I spent about a week trying to reboot the project using Next.js, Supabase, Prisma, etc. Then, I realized that I was just wasting my time. You can look at the issues I've faced because giving up here:
I then decided to reboot the project using a different stack. Let's call that "JS/TS fatigue". I still love the language, but TBH the ecosystem is crazy immature and unstable (sorry folks, but it's the reality of it). And there's a real cost: not delivering.
Surprisingly, the most obvious option in front of me appeared to be Laravel and PHP. The developers among you might think "what the hell?!", but Laravel is actually mind blowing compared to what I've seen in other ecosystems (and I've seen many!). Moreover, PHP has evolved quite a lot in the last 20 years. That's not to say that I'm going to love the lack of strict type-safety on the back-end, but I'm ready to cope with that to benefit from all the goodness that Laravel comes with.
After spending about a week doing R&D and architecture work, the technical stack of Knowii is now as follows:
- Back-end: PHP, Laravel, Jetstream, Fortify, Sanctum, Inertia, PostgreSQL
- Front-end: TypeScript, React, Inertia, Immer, Zod, Tailwind, Prime React, react-icons, date-fns, react-hook-form
- Tools & development environment: Laravel Sail, Docker, Nrwl NX, Vite, release-it, commitizen, Prettier, Husky, and more 😂
- Hosting: Hetzner
- Deployment: Laravel Forge
After a few weeks of intense (dare I say hardcore?) learning and efforts, I have managed to:
- Recreate the project from scratch using Laravel Jetstream
- Convert the Vue.js front-end to React (I just couldn't keep Vue, sorry)
- Learn enough about modern PHP to develop the back-end
- Learn enough about Laravel and its ecosystem to understand what I was doing
- Create a good basis for the user interface (logo, typography, color palette, layout, base styles, base UI components, menu, responsive design, etc)
- Implement the major authentication flows: signup, email validation, login, password forgotten, reset password, delete account, etc
- Implement user settings edition: name, email, etc
- Add support for usernames
- Implement the dashboard screen with the community list
- Implement community creation
- Implement the basis of the API (responses structure, error responses structure, etc)
- Create the basis of the API client (which could later be released separately)
- Create a mailing list and add the signup form to the homepage
- Start working on the RBAC security model
- Create a release pipeline
- Last but not least, deploy the application in production
I know that there are solo developers out there who manage to build entire products in a week or so, but I'm clearly not one of those. I'm a craftsperson, and I do my best to build something solid. Especially given that I intend to build a platform, not just a one-off tool, and I want to work on this for YEARS.
All in all, this is a solid basis for me to start implementing more concrete features.
I've released version 0.5.0 today:
This version is already available in production, over at Knowii.net:
Again, since this is an open source project, everything is being built in the open.
Knowii - How it looks right now
Here are a few screenshots of the user interface...
Signup:
Login:
Landing page:
Dashboard with the list of communities (private and joined):
Community creation dialog:
Community homepage:
User profile:
Menu:
Every piece of the user interface is responsive. It adapts to different device sizes. It may not be perfect (I'm not professional UI designer!), but I think it's a good start.
BTW, I wonder what you think about the logo. I like it, but I guess that UI designers might not 😂
The idea is to represent "COMMUNITY". We're not the same, but we're together, and we can create bridges, and help each others grow.
Knowii - What's next
Now that the "core" engine of Knowii is there, I can focus on building more useful FEATURES.
As I've mentioned, the centrally hosted/managed version of Knowii is already in production over at knowii.net:
You can already register, and start testing it. Of course, at this point, there's not much available, but it's coming real soon.
The very next steps are:
- Creating resource collections
- Adding resources
Once that is there, I will expand the community management features (inviting members, discovering and joining public communities, etc.
At that point, I will also be able to onboard more people, including you (if you care). I will start sharing PKM resources through Knowii, and will also migrate the content of my PKM Library over to Knowii.
I also need to think about the business model. As you know, I'm trying to make a living, while bringing value to the Knowledge Management community. For that reason, the centrally hosted version of Knowii will have limitations. But I don't know which ones yet. I could limit the possibility of creating private (invite-based) communities to paid users, limit the number of resources that can be added to a community, etc. There are various options, but I need to pick the right one(s).
What I need right now is FEEDBACK and ideas. If you feel like this platform could become useful to you and your communities, then, I'm all ears, I need to hear what you want, need, and dream of.
There are multiple ways to give feedback:
- Email: just hit reply!
- Create issues on GitHub: https://github.com/knowii-oss/knowii/issues
- Start a discussion: https://github.com/orgs/knowii-oss/discussions
- Contribute code
Later on, I also want to build a browser extension to curate resources more easily, making it a breeze to share resources with the communities you're a part of.
New articles
No new articles this week.
New published notes
Recently, I've mainly published notes about PHP and Laravel, as I was learning more about the ecosystem.
Thinking and learning
I will resume sharing links real soon, don't worry.
And hopefully, I will start doing so using Knowii!