How I made Notion 'at home', there is a full

Hello, Harbovites!

I haven't written for a long time, because for me Habr was originally a DIY party, in the good sense of the word, and I didn't have anything DIY.

And now it has appeared – for the sake of demonstration I decided to make Notion from rails and sleepers.

We will return to the question of why, as is customary here and among all IT specialists, at the very end, but now let's get down to specifics and without fluff:

– Right from scratch, only with personal training (20 years in the business), before recording the video I just refreshed and manually checked the sensitive areas for me, so as not to ruin the recording.

– Minimum number of dependencies, only when absolutely necessary.

– Ruby on Rails out of the box as it goes.

– Frontendless – no JSON and frontend*

– Realtime – everything is alive and moves through websockets and other turbo frames

– Windows + WSL.

– Tailwind and all his amazing tricks

– Hotwire StimulusJS + SortableJS, Stimulus-use, Stimulus dropdown

– Internationalization – ru

– Well, and so on, little things.

The list of implemented features is as follows:

* Registration, Authorization

* Workspaces

* Pages – hierarchy, nesting sorting, home page

* Text blocks with file attachments, image processing

* Initializing tables from CSV

* Conversion from Markdown, pandoc

* Table properties – setting properties of multi-selection, single-selection, currency display

* Fixing view table versions

* Content filter – sort by dates, change display composition, number of cells, column values

So why all this, you ask?

The whole point is that I wanted to highlight the painful issues for today's businesses, where they fall into a swamp of dependence on something incomprehensible, and do not move in the direction they need to move.

The most interesting thing is that I have already done this manually within certain companies, in different forms at different times.

This is the best way to show beginners how to solve problems. Programming has nothing to do with it.

It is necessary to obtain a sample, a product working in real conditions, and only after that to engage in optimization and other details. Get consumption, and then take the necessary measures based on measurements.

In the world of development now there is no need to “lay down” anything for the future – everything is scaled, stretched and rewritten when necessary, Habr is full of such stories.

But we hear little about problem solving, because it is not such an interesting topic.

So, my statements on the roasting, respected to you:

1. Any software can and should be replaced.

Well, to begin with, the example is ready – it is possible to replace notion in your company.

Observed result in 6 hours. What if you work for a couple of days?

I have always adhered to one statement – you must own your data.

Starting even with the rights to the domain name, you won’t believe it, but literally half a year ago one of the counterparties found himself without three addresses of his “brand”, because they belong to three different “former partners”.

This is data, critical. Don't underestimate the predictability of stupidity (c) Tony.

2. Basic features are always enough.

Everyone knows the stories about how most people use up to 3% of the functions in MS Word.

And these functions are repeated approximately the same in any Wysiwg editor.

Everything else is just a business product add-on to expand the consumer coverage area.

But if we always consider a specific enterprise and specific needs, it turns out that not only are they needed, but specific teams are capable of using only a couple of functions in their limited volume in their business processes.

They simply won’t have the time or desire for anything else.

This is generally a topic for a separate discussion, which will lead us straight to Systems Engineering, to TRIZ and to the principles of Ford, Toyoda's 5 Whys, etc.

It is possible and necessary to obtain what is necessary in a minimal amount.

The example I gave demonstrates this clearly. Yes, you won't replace Notush with a competing service, that's a whole other story.

But to take control of the information exchange of your team, your employees once and for all, with the ability to not depend on the vendor, in the primitive shortest time – here is an example for you.

3. Replacement cost.

I have (possible) ideas about this demo, remove unnecessary code, write the very specifications that should have been for this product, and cover it with tests (in that order, give answers in the comments why).

This does not mean that everything is ready and you can move, but it does mean that the conversations (which I have and will continue regularly) with the techies, at the time of forming plans in the IT departments about what we should do and where to go, will not contain phrases like “x man-years, don’t even think about it.”

It is precisely for such cases that the demonstration was made. Those who need the result, so that certain data starts to circulate under certain conditions, and at the same time that the data, and its circulation itself belong to the company — always correctly evaluate both the team that blocks it, and such decisions that ultimately do not simply optimize something somewhere there, but strengthen the company for years to come.

Own software provides support for decisions that could not be made to suit the “current microservice circumstances,” etc.

4. Practical training of developers using examples.

The best way to remove billions of questions about how, what, and where.

Use it, I have done this trick with developers many times, the speed of introducing new developers into operation (and at one time I had to convert from PHP to Ruby, now JS/TS and Python have been added, but it doesn’t change the essence).

Whenever there are controversial issues, it is always suggested to implement something similar at the same time – please.

Even if you prepare for a long time and make it, you will fall for this trick: let's take any other product and demonstrate its bootstrap in the same amount of time.

This is where the understanding awakens in beginners and those interested, and where exactly to look here. Everything is correct – on making decisions on how to act at a specific moment in time.

Experience is the path of mistakes and wrong decisions. And when you have a reliable horse (in this case, a rail), it will be easier for you to make mistakes.

And you will understand that the most important thing in moving forward through experience is a set of mistakes.

You will choose how to type them yourself, I am just showing you for fun.

5. No frontend needed.

All this dance with packing meanings into json and then back, state synchronization, GraphKUEL oh my God, in short, you can live and do things without it, friends.

I hope you found it useful and interesting, link to the video on YouTube.

A little about domestic substitutes:

1. Blocked YouTube was chewed, processed and pushed within 2 hours yesterday.

2. VK is still being processed at this moment, it was loading all night.

3. Zen did not miss the file limit – up to 70GB.

4. Rutube did not pass due to the time limit – up to 5 hours.

I don’t even touch the platform, the level of bugs and crashes from the first day simply doesn’t allow me to use it.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *