HN user

bowlingx

122 karma
Posts4
Comments31
View on HN

I started working on a WYSIWYG CMS Editor for Web-Applications and Websites.

Based on my experiences, I think there is something missing in the market for content creators / editors for WebApps (with landing pages etc.) and websites. There are many headless CMSs available but many are lacking a simple editing experience.

I want to make it easy for the developer to integrate it into a project (using React for example) - but also make it really easy for the content creator to be more independent of developers - while keeping UI constraints etc.

I choose to build a native iOS and MacOS App with SwiftUI that basically provides all editing UI as native components instead of using HTML/CSS - Basically an overlay on top of the website that let's you control the components and website grid/layout. It's mainly a proof of concept and for me a way to learn SwiftUI :)

There are many Website builders that provide great editing UIs (e.g. Webflow, Builder.io etc.), but I feel a native app, especially on iPad OS could provide benefits and it's a nice challenge :)

I ordered one :D. I love the size of the car, it's small enough to navigate in a town and AC charging speed is high (22 kw, no one else, besides a SMART offers this in this price range). I can't charge at home (as I live in an appartment in the city) and I don't want to wait 6 hours for a full charge. Fast chargers ( >= 50kw) inside towns in Germany are (still) rare and there are more 22kw chargers available around me, also free ones at supermarkets. I occasionally drive more then 500 km, but maybe 3 times per year, and then I would propably take the train anyway.

I used redux before switching to Apollo and a query parameters / routing based state management. In Web Applications especially, it makes sense to couple global state to URLs. It makes the page and the current state shareable and brings value (like tabs, filters, pagination etc.). I developed a library based on zustand and immer for this case (called Geschichte). It’s open source https://github.com/BowlingX/geschichte

Most of the use cases I can solve with that, the rest is usually either forms (covered by formik, final-form etc), async loading of data (Apollo) or local state and animations.

I think a highly underrated Topic:

Food and Environment:

1.) Clean meat will become affordable to produce and cause a big shift in the meat industry.

2.) More People will switch to a (more) plant based diet, either for health and/or environmental and ethical reasons

3.) There will be a lot more startups in the plant based food sector (like beyond meat, just egg etc.)

Thank you for this <3

Technology wise this year was great.

- Learned a lot more about kubernetes (bare metal, gcloud and finally digital ocean, rancher 2.0)

- Improved my JS skills (react etc.), focused a lot more on architecture

- Improved my spring-boot skills and upgraded to Java 11

- founded a company with my partner and got a bit into after-effects (from the technical side, meaning distributed rendering, automation)

- Created a "home lab" setup and learned vmware ESXi

Missed machine learning will check that out next year :)

Happy Holidays <3

For websites this seems ok for me, but for apps that run inside wkwebview, I think there should be more control about this behavior. You can't zoom normal apps so this would make the Usebility properly worse or unexpected.

Finally they managed to remove the weird intelligent selection behavior in safari!!! (The one that unpredictable marks blocks or the whole website). Thank you apple :)

They also ignore any viewport meta data so you can always zoom. My Cordova app doesn't like this :( I hope it can be disabled for WKWebView programmatically

My cordova application's history management stopped "randomly" working with "SecurityError: DOM Exception 18" exceptions. The reason (mentioned in the link I found) is a limit that has been recently introduced by apple to prevent a security flaw.

It doesn't make any sense for me. This might break a lot of applications and Websites that rely on the History API.

That's correct. But it is possible to specify a context container where the highlighting is executed so if you change parts of the document (like around this container) it doesn't change the relative path.

Example:

<html>

<body>

<article id="myContextContainer">

  <p>...</p>
</article>

</body>

</html>

If you add or change words and paragraphs of course, that would make the highlighting unstable. You could also restrict the marking to a specific paragraph only (and set the context accordingly). It always depends on the application this library is used for. But if anyone has a good idea how to compensate that I'm open for suggestions :)

Thank you for your feedback.

Hey, thank you for your feedback. Yeah, that are some problems with the selection that comes back (no textnode comes back but properly the body or something else). I have no solution for this so far but I will figure something out ;). thanks!

If you just want to select a portion of a text that would be working with build-in browser APIs (see https://developer.mozilla.org/en-US/docs/Web/API/Window/getS...). Marklib can be used to make a selection visible and persistent. Especially if you want to display a lot of inline comments for instance and you need to paginate trough the result, this library can be handy because it allows marking, even if the document has been altered before with another rendering.

Let's say you want to build a collaboration tool where you write articles. You want to provide a functionality that people can comment on parts inside the article (inline comments) and you need a way to visualize what they marked and also persist the marking (on a server for instance). That what this library is for :).

Hi :), marklib focuses on rendering and persisting (serializing) the selection, not on actually providing a cross-browser functionality to get the selection.

marklib is especially useful and build for rendering incremental persisted selections and/or adding selections when other selections are already rendered (and though have modified the DOM). This is something rangy does not provide (at least that's my last information).

yeah, It will report the underlying textnode (if you are lucky). It's really inconsistent across browsers: some report the h1 tag, some the underlying node. Depends also how far you go and if you mark over the tag (without highlighting another node). Chrome is doing the best job in my experience.

Thank you :). Good point, I just thought it looks nice (works not in firefox though :/). Of course other colors would be possible, it's just a class that's applied on the wrapping elements. I will continue to develop the library and create more examples and use cases!

Thank you for the Feedback. The library only focuses on render a selection, either a serialized one (it's not yet shown in the demo) or a selection made by the user.

But of course you may use it with any other library :)