
Show HN: Primo – all-in-one IDE, CMS, component library, static site generator - mmmateo
https://primo.af
======
mmmateo
Hi HN. primo is an IDECMSCLSSG (short for IDE, CMS, Component Library, Static
Site Generator) I’ve been working on for a few months. The idea came from
wanting to host a Notion page at a domain name and not being able to. Once I
made the initial version - a basic text editor - the rest of the features just
came naturally (except for the SSG, which came from not wanting to deal with
hosting).

I’d written off freelance web development a couple years ago after yet another
spontaneously-combusting WordPress project, but primo’s enabled me to get back
into it and it’s been A+ so far. primo kind of looks like a page builder, but
it’s totally the opposite - instead of abstracting away the code it makes it
more accessible.

It’s free forever, and I’ll be open-sourcing it soon (built in Svelte -
beautiful framework). Ideas & critiques super appreciated.

Cheers

~~~
tootie
This feels like such a ludicrous concept, but also I love it. I've recently
fallen back into the world of building static marketing sites and the tooling
is now so sophisticated, cheap and undifferentiated. We're solving the same
problem over and over in very similar ways. I generally despise all-in-one
solutions, but this use case actually makes a lot of sense at this point.

~~~
derefr
I don't know about ludicrous — this is essentially the same USP you get from
Squarespace, Wix, etc., but just without the "and we host the resulting site
for you" part.

In trade for not doing the hosting, it becomes just a native app you can own,
rather than a subscription service. Just need a _commodity_ web host to slap
it up on.

~~~
ptman
[http://www.nosupportlinuxhosting.com/](http://www.nosupportlinuxhosting.com/)

Or Oracle free VM. (I made a comparison of some free stuff in the beginning of
this article: [https://matrix.org/docs/guides/free-small-matrix-
server](https://matrix.org/docs/guides/free-small-matrix-server) )

~~~
phs318u
Thanks for that. I didn't realise Oracle's free tier inclusions were so
generous (e.g. 10TB outgoing) and with no time limit. Is there a catch?

------
continuational
It sounds great, but the permissions it needs is too much for me:

> Repositories > Public and private

> This application will be able to read and write all public and private
> repository data.

Would it be possible to use deploy keys for specific repositories instead?

~~~
mmmateo
Definitely. I thought I'd made it so you only need to give full permission on
build, but either way individual repo access is ideal; I'll work on that next.
Thanks.

~~~
mmmateo
Okay, you should be able to log in with just public repo access now. Still
working on individual repo access.

------
squires
I don't remember the last time I got such a chuckle out of a domain name, but
this one is great.

~~~
elcomet
I don't get the joke, can you explain it ?

~~~
1123581321
AF is short for “as fuck,” e.g., “that movie was funny AF” means it was really
funny. Primo AF.

~~~
elcomet
That's the part I understood, but what does primo mean?

~~~
matteocontrini
In Italian "primo" means "first", I guess in English it has a similar meaning
as well?

~~~
lproven
Er, no. In English, it does not mean anything at all.

"Prime" is the analagous English word, I would think, and it is not a
superlative. One would not say "that's prime" of something good, impressive,
whatever.

"Prime" means: ready; in the thing's initial state; available for immediate
use.

It also has a meaning in maths, but that's not really relevant.

~~~
creamyhorror
"Primo" is US slang for first-rate:
[https://www.collinsdictionary.com/dictionary/english/primo](https://www.collinsdictionary.com/dictionary/english/primo)

~~~
agustif
In spanish it's cousin

------
cornstalks
\- Is it possible for the generated static site to be HTML+CSS only (no
JavaScript)?

\- How optimal/minified is the generated code?

\- FYI, if you have third party cookies blocked, logging in with GitHub will
fail (the login popup opens then immediately closes with no error indication).
While failure might be expected, it would be nice to give the user a hint on
what might have gone wrong.

~~~
mmmateo
\- The static site is actually just html/css (and js, if you have any). any
ideas on how I could make that more explicit?

\- It's pretty optimal. It's not minifying the HTML so you can see the tree in
Github and see changes. But PurgeCSS gets run on the bundle before it builds
out, so your css should be as small as possible.

\- Hadn't considered that, thanks!

~~~
cornstalks
> _The static site is actually just html /css (and js, if you have any). any
> ideas on how I could make that more explicit?_

That's great to hear. I've used some generators that generate bloated junk
(especially if they're WYSIWYG-ish). I'm terrible at messaging, but something
along the lines of mentioning that (1) it let's you decide what you use (i.e.
it doesn't force you to use/generate JavaScript), and (2) it avoids bloat and
only includes what you use.

------
dathinab
I haven't looked into CMS since ~6 years or so but this pretty much what I
would expect from a CMS in 2020.

Through maybe it's focused a bit more then some other systems on (also)
supporting a bit more tech savy people. But then in my experience even with
CMS targeted a less tech savy people once a change needs to be done which is
more then just changing the text it's always passed to the tech savy people
anyway.

Through I guess given how primo highlights the IDE, Components Library &
Static Site Generator not all web focused CMS do that today??

~~~
mmmateo
Correct. As far as I know there aren’t any other tools that do them in tandem.
WordPress might be considered an IDE because you can edit the theme/plugins
from the dashboard, but I’ve never seen anybody do that for legitimate
reasons.

------
ahnick
Reminds me of TinaCMS
([https://github.com/tinacms/tinacms](https://github.com/tinacms/tinacms)),
but built on top Svelte instead of React+Gatsy. The choice of Svelte is really
exciting to me. Can't wait for the source to drop.

------
kfk
In terms of connecting to data sources I would rather decouple the querying
and security layer. Companies are going to be focusing more and more on
integrations. So if we have an integration layer in rest or graphql it would
make building complex rich apps a much nicer experience. Basically what you
have here is a competitor of many dashboarding tools like Tableau or PowerBI.
I know you are thinking wordpress and cms, but these tools will eventually
power dashboards as they blend with web apps.

~~~
mmmateo
That's a great point I hadn't considered, thank you.

------
gavinray
If you need any inspiration from similar products (I was building this exact
thing with a friend for the last week or so, gonna toss that in the bin now
haha):

[https://grapesjs.com/](https://grapesjs.com/)

[https://pinegrow.com/tailwind-visual-editor/](https://pinegrow.com/tailwind-
visual-editor/)

Here's a video of what we were working on, if anyone's curious:

[https://streamable.com/9elv76](https://streamable.com/9elv76)

I swear the zeitgeist/collective unconscious is real.

~~~
mmmateo
That's rad. What did you use to build it?

~~~
gavinray
Thanks! It's grapes.js with custom component definitions for the re-usable
blocks.

~~~
maiensch
Interesting, I wanted to build something similar for tailblocks [1] so I
forked stitches [2] to build this: [https://stitches-for-
tailblocks.netlify.app/](https://stitches-for-tailblocks.netlify.app/)

Now that you introduced me to grapesjs there's gotta be a new iteration on my
part, thanks!

[1]:
[https://mertjf.github.io/tailblocks/](https://mertjf.github.io/tailblocks/)
[2]: [https://stitches.hyperyolo.com/](https://stitches.hyperyolo.com/)

------
chrisweekly
Please fix the GH "read and write to all repos, public and private" to make it
reasonable to investigate. Thanks!

~~~
mmmateo
I’ve enabled just public repos for now, and individual repo access is next on
my plate.

------
evolve2k
I’ve been moving towards implementing an API based CMS, specifically
prismic.io which allows me to setup content elements that marketing staff can
edit.

Can you explain a bit more about the non-tech user experience for content
editors?

Would love to find a magic Wordpress replacement with a proper git & tailwind
supported workflow for devs and a simple interface for content editors. I’m
hoping this fits the bill.

~~~
mmmateo
Seems like it should be right up your alley. Here's a gif of what content
editors see: [https://imgur.com/7W9zcW9](https://imgur.com/7W9zcW9)

So there's a simplified toolbar (no dev stuff) but they can still add page
sections and components from the component library. And when they edit
components they only see the fields. You'll be able to control which stuff
they have access to in the future.

~~~
lukeramsden
This does look very good. I could easily see this becoming a real COSS
alternative to SquareSpace et al, which I feel is sorely needed.

------
emmanueloga_
The problem with website builders is that they do not suit anyone, except
maybe when you need quick, "good enough", perhaps one-off web site.

* Professional developers don't want to spend their days on a online GUI like this as opposed to the comfort of a repository and trusty code editor and tools.

* End users, even with a great WYSIWYG UI, may still not be able to make knowledgeable design decisions. Also, even with the best WYSIWYG GUI, sometimes you just need to tweak the source.

We should be building better structured content management systems as opposed
to better Dreamweaver-like tools. Structured content also enables other cool
things like single-source, multiple-output publishing.

There are a lot of these "headless CMS"s nowadays but I still haven't found
one that I really like, I think there's room for improvement.

~~~
mmmateo
You hit the nail on the head when it comes to page builders. As far as I can
tell, most of then try tackling the problem of expensive development by
enabling nontechnical users to build sites in one of two ways: customize with
a GUI (which is either comically limited or harder-than-code complex) or
choose from an endless list of pre-built components/templates (which just
turns one development hour into three research hours).

primo enables end users by enabling developers by offering immediate access to
those same productive tools and making the code as accessible as possible.

As to your comment on single-source-multi-output, primo will be able to expose
all the content on your site at an endpoint soon, stay tuned.

~~~
emmanueloga_
cool! will keep an eye over the releases

------
leerob
This combined with Tailwind UI[0] makes a pretty stellar low-code tool. For
someone with entry level HTML knowledge, you could copy/paste your way to a
well-designed site.

[0]: [https://tailwindui.com](https://tailwindui.com)

~~~
mmmateo
Absolutely. It almost seems like they were made for each other.

------
benrbray
Uses ProseMirror [1] internally. Nice choice!

[1] [https://prosemirror.net/](https://prosemirror.net/)

~~~
mmmateo
ProseMirror and CodeMirror. Those guys do great work.

~~~
pier25
It's actually a single guy, Marijn Haverbeke. He is also the author of
"Eloquent JavaScript".

[https://marijnhaverbeke.nl/](https://marijnhaverbeke.nl/)

~~~
mmmateo
Ah, my mistake. Good to know.

------
4rt
In Firefox I just get a blank page where I assume there should be an editor.
There's a toolbar at the top but none of the buttons do anything, and in the
console there's the error:

Uncaught (in promise) TypeError: e is undefined Ng _User.svelte:34

~~~
afro88
Same here. On 78.0.2 on macOS 10.15.4

~~~
kanjus
On Firefox 78.0.2, Arch, can't sign in as the pop-up keeps closing and trying
to manually visit the "authorize app" url loads a blank page.

------
pier25
I imagine this is similar in concept to Webflow, Wix, Squarespace, etc? As in,
a tool to build a custom static website with easily editable content.

Since this needs a lot of code to actually create a site, why not create a CMS
instead that can be connected through an API to a SSG?

~~~
mmmateo
You could say it's similar, but only insofar as WordPress+Timber is also
similar (i.e. coding a custom site for end users to easily edit content).

I'm not sure I understand your second question, but I believe lots of those
already exist, and it made more sense for my use-case to just build the site
directly from primo.

~~~
pier25
Maybe I'm missing something but it seems every component in Primo is made by
coding HTML and CSS. What's the advantage over simply using a SSG?

~~~
mmmateo
Well, primo is an SSG, but some advantages over other SSGs: no setup for
Tailwind/PostCSS, no setup for js modules/libraries, reusable components,
coding from the browser, encapsulated component styles, developing components
in isolation, wiring up components to fields in seconds, and a CMS your mom
can use. More to come by version 1.

------
detritus
I'm curious to learn more, but I wish to opt-out from 3rd party trackers
beforehand - there doesn't appear to be any method to do this, so am I (and
any other Europeans in the same boat) entirely unwelcome on your site?

Or am I missing the feature (I did try and look)?

~~~
mmmateo
I thought I'd removed all of the trackers before I launched. It's just using
Goat Counter ([https://www.goatcounter.com/](https://www.goatcounter.com/))
which I believe is European-friendly. did I miss one?

~~~
detritus
If that's the case, then great - but to my ignorant eye the warning notice at
the bottom seemed to imply there were some (or, at least - as a passerby - I
am perhaps unsure what merits a 'strictly necessary technical tracker') and
then there's no visible opt-out. Which makes sense if there's nothing to opt-
out from!

I must admit, I assumed a dark pattern was at play.

~~~
mmmateo
That makes sense. I'll take a look at that; it's probably unnecessary.

------
alexmingoia
Why give this away? You could have a good business. You’re leaving money on
the table.

~~~
mmmateo
I'd rather leave $ on the table if it means enabling independent devs
(especially those in developing economies) to make $$$

~~~
janimo
Logged in just to say congrats, this attitude is seldom encountered, even
among those building their products almost entirely on freely available
foundations.

~~~
mmmateo
That’s the craziest thing to me. There’s no reason OSS has to be a thing.
Here’s to hoping greed never kills it.

~~~
alexmingoia
Being compensated for one’s efforts isn’t greed, and for-profit software can
also be open-source.

To each their own. It’s a cool project.

I’ve spent a lot of time contributing to OSS, created popular OSS projects,
and I felt pretty shitty when I realized other companies were using the
software to make money and I hadn’t done anything to ensure I was compensated.

~~~
mmmateo
Not at all, I was more speaking to companies that lean heavily on OSS without
giving back, which sounds like your experience. Would love to pick your brain
sometime if you’re open to sharing any lessons you’ve learned along the way.

------
happybeing
Mateo, I'm very interested in primo and look forward to putting it to work
once it is open source. So very pleased that you are heading that way! I'd
like to sign up to the forum without using github (as I'm allergic to anything
leaking data, esp to corporations / Microsoft).

I realise it may be needed for some primo features, but is there any chance we
can use email to auth with primo's Discourse?

I'll be building test sites and deploying to SAFE Network as soon as I can.
Svelte is my favourite so again I'm please that you've chosen to use it to
build primo. Good luck.

~~~
mmmateo
Thanks for the interest! I’m in the process of stripping the tool out of the
online service so it can easily be self-hosted or run locally. I’ll make sure
to enable email auth in Discourse once the source is published.

------
homami
> This application will be able to read and write all public and private
> repository data. This includes the following: ...

Is it really needed?

~~~
mmmateo
Not at all. Will have an individual-access update posted today.

------
jagger27
What a great domain name.

~~~
preommr
I've tried, and I can't figure out the joke.

~~~
gilrain
It's how one might say "premium as fuck" in a casual context.

------
draz
I previously worked as Product lead for a homegrown CMS for one of the large
media companies. We built a solution to address a myriad of content types
(images, videos, voice, news articles, games, etc), For content in all major
languages. I like this, and happy to chat if you want to get a perspective.

~~~
mmmateo
That sounds intense. I’d love to chat; will email you tomorrow.

------
ricksharp
Nice work!

I’ve created my own blog around a pure pre-render solution (using gatsby
stripped down to just pre-rendering) - because I want to control everything
and not be dependent on anything aside from the stack (react in my case).

Impressive how you’ve tied everything in to github. I’ll be reading your code
to see how it all works.

------
whytaka
I made something similar when I was looking for an alternative to Shopify
component based template CMS for the company I was working for at the time.
It's a very good compromise between developer flexibility and marketer
accessibility.

Congrats!

~~~
mmmateo
Thanks! Would love to hear any neat ideas you came across if you're up for it

~~~
whytaka
Perhaps I didn't grasp at all the features you currently offer , (I'm also
skeptical whether you'd want to broaden the feature set that it would become
too complicated of a offering) but with what I had created, it was possible to
have drafts with multiple versions, and I was preparing to make it possible to
expose those multiple versions for AB testing as well.

~~~
mmmateo
Thanks for sharing. Makes me wonder if primo could use GitHub branches for the
same application.

------
replwoacause
Really impressive work! Is there any chance this can be used to a create a
front-end that can connect to data sources like APIs and databases (almost
like a Retool that lets you build a web app instead of internal business
tools)?

~~~
mmmateo
Thanks! And I haven’t tried that use-case specifically but you can definitely
fetch any data in a component’s JS and use it to populate its markup.
Basically what you’d expect of a cloud IDE, but with the added benefit of
managing the components individually.

------
ccleve
This is really nice. What's it written in? How did you do the Github social
login?

Would love to see the code. If you're planning to open source it, there's no
downside to making the repo public now. We know it will get better :)

~~~
mmmateo
Thank you. It’s written in Svelte & uses Tailwind. Just getting some input
before I bite the bullet, should be public in a week or so.

------
danbruder
Bravo. This is very cool. Well done shipping it without getting bogged down in
all the possible features and workflows that could be part of this sort of
thing.

~~~
mmmateo
Thanks! Focusing on the core features was definitely the hardest part.

------
codegladiator
why does primo.af shows only part of content of
[https://primo.press/](https://primo.press/)

~~~
mmmateo
Not sure I understand, would you mind elaborating?

~~~
codegladiator
primo.af just shows tnc/privacy policy/and a login button

primo.press shows about/features/login/signup/pricing/cookie policy

------
nickthemagicman
Tried it and created a site but when I click on the site it sends me back to
the homepage. Not sure if I'm doing something incorrectly.

This looks really cool!

~~~
mmmateo
Thanks! Do you mean it shows you a login screen?
[https://imgur.com/a/wD2ccQP](https://imgur.com/a/wD2ccQP) Because in that
case you just need to log in again (since auth doesn't transfer across
subdomains).

------
lawrenceong
this is pretty neat! any plans for dynamic content, or data sources? as well
could you be able to show how the authentication mechanism works?

~~~
mmmateo
Yeah definitely. I imagine it’ll just have to auto-build whenever I gets
upstream data updates. I’ll make sure to update the docs; it’s pretty simple
atm, just invite a user (set them as a content editor or developer) and they
can join your site. And if you want to give them build access you add them as
a collaborator on the repo.

~~~
lawrenceong
tks @mmmateo! I'm also thinking more of allowing them to manage their own
"things", whatever they may be. presently i'm leaning towards something like a
CMS, with some kind of storage (s3? or something else?) that backs it. I did
not look at the source, but this would be something like a gatsby with a front
end, so much more new-dev, wannabe-dev, or partime-dev friendly.

------
syntaxing
Neat! Is it possible to load themes? That would be super useful if it was
possible to load Jekyll/Static site themes.

------
frays
This is great, thank you for sharing. Looking forward to your update to GitHub
repo permissions access.

------
ekianjo
>Build to Github: Anytime you make code or content changes, a blazing fast
static bundle gets built out to Github where you can deploy it to your host of
choice.

In light of the recent outages on Github it will be anything but blazingly
fast.

~~~
mmmateo
Blazing fast because it's a static site, not because of github. Github's just
where you build it to, but once you deploy it to a host (Vercel, Netlify), it
doesn't matter if Github goes down.

------
jadbox
The video doesn't play for me on mobile (Android Chrome)

~~~
vezycash
This is the video link
[https://www.youtube.com/watch?v=w1MGtt89d9A](https://www.youtube.com/watch?v=w1MGtt89d9A)

------
bovermyer
This is interesting, particularly the all-in-one nature of it.

However, of late, I've taken to hand-writing HTML and CSS for some small
static sites I manage. I still use Hugo and Sass for my personal site, though.

------
whitehouse3
Excited to try this as a replacement for RapidWeaver.

------
ramon
Great project Will definatly haver a look.

------
ramon
Great project, Will have a look.

------
wun0ne
Excited to try this. Nice work!

~~~
mmmateo
Many thanks!

------
akayoshi1
Primo as f __k I see

------
wieghant
Feel like we've gone full-circle for the umpteenth time.

------
pcast
This is great!

------
minerjoe
I'm getting a completely blank page? <body></body>

I would expect a static site generator (or at least any one I would choose to
use) to create pages that do not require javascript.

Edit: My bad. Still, for a landing page for something like this, wouldn't you
want to eat your own dogfood?

~~~
apazzolini
While I understand wanting the site you create within Primo to work without
JS, are you legitimately expecting that a web-based IDE is going to work with
JS disabled?

~~~
detaro
Is that project front page an IDE?

~~~
mmmateo
It's part of the app since it also serves as the dashboard once you log in,
but ideally it would be separate

~~~
detaro
Actually, it could be a cool demo if the page were build with Primo and you
added a fake login so a visitor could "edit" (but not save) the page!

------
hughpeters
Using ".af", the top-level domain for Afghanistan, so your domain is
pronounced "primo dot A.F." is a little on the nose.

~~~
hughpeters
Ouch! Why all the downvotes?

