I wrote TinyCld because Google in their infinite wisdom decided to cancel my 20 year old free Google Apps suite for "commercial usage". Which, to be fair it totaly was, and I obviously shouldn't complain about 20+ years of free usage.
But _still_, that wasn't the terms I signed up under, and nothing is more irratating than a good old fashioned rug pull. How hard could it be, right?
TinyCld is two things, a self contained workspace like the one we're all familiar with (mail/cal/contacts/drive/text/calc), as well as an easy to extend platform that brings all the batteries you'd need to write realtime web+native apps.
And yes, I used AI to write a lot of this. (really, ~200k loc by one author is a pretty good tell) Some may hate on that and thats fine, I get it. But I did look at each commit and there is a lot of bugfixing and tweaking features back and forth that went into it. If nothing else, I've got some good stories to tell here and have learned a lot.
Stack: Expo (React Native + web) on the frontend, PocketBase + Go on the backend. Standard protocols (IMAP/SMTP/CalDAV/CardDAV/WebDAV) so native clients work as well.
I'm currently using it myself with a few friends but has not been widely used beyond that.
Looks really nice. Do you plan to support this in the future? Are you planning to foster a community of developers around it, or are you thinking about hosting it as a service?
Asking for a friend, who also enjoys building projects with LLMs, but publishing and supporting them not so much.
yes, I'm planning to support it indefinitely - my company (~10 users) just started using it so we're very invested in it's success.
I'd love for people to write whatever crazy packages they can think of for it so it has a rich ecosystem. It has the ability for admins to add a git or NPM reference into the packages list and install packages on the fly like wordpress supports.
As for hosting as a service, maybe someday. I also own the tinycld.com so who knows.
I have been considering Nextcloud for a homelab install, but dreading the deployment/maintenance story there if I ever start relying on it as a source of truth. Would definitely consider a smaller option like this.
My biggest worry is your supply chain. If you're mostly using AI, would love to see you build your own library of functions and drop as many direct and transient dependencies as possible.
hah, so I've been fighting AI all the time as it tries to write all this on it's own vs re-using libraries. To me that's a much safer option, because the libraries all pre-date AI so I assume the authors know what they're doing.
Not to bag on Nextcloud but I do think that this is _much_ easier to understand and maintain, it's standard Go/React/Sqlite, nothing esoteric so if you did need to maintain it I'm sure anyone could pick it up. Of course I don't really know Php so that def flavors my opinions here.
The claims you make about Go/React are similar to the claims made by PHP and Python and JS users. Basically: the thing I'm familiar with is easy - then imply that it would be the same level of easy for others.
This does look easier than Nextcloud however I'm not sure thats the tech-stack. Generally the new project is easier/simpler because it doesn't have so many years of scope-creep, work-arounds, half-imolemented-then-abandond features.
yep very true, everyone has their preferred stack, and greenfield is _always_ easier than maintaining years worth of past code.
I did look really closely at Nextcloud when it came time to leave Google apps. I really wanted it to work but also wanted:
* Realtime updates - Pockebase gives us this for free.
* A native app - React Native <- this one worked out but does cause pain with the web version, some things don't work _quite_ as well as a standard React ap would.
* Lightweight docs that work on mobile. Collabora is very full-featured but is also pretty slow. It remains to be seen if I've successfully here because we're only starting to use our docs "for real"
And also: I'm absolutely sure this has many bugs that I've yet to uncover. All I can say is that I am planning on using it for real-world business stuff so I'm sure we'll be uncovering and fixing them throughout the next year.
I like this. However, I just gave your Sheets a simple stress test by selecting a bunch of cells, then using the fill handle to populate other cells, and afterward doing an undo (Ctrl+Z). It completely crapped out and did not do what I expected...which was to return to its original state prior to using the fill handle, with the selection still selected.
Sorry it didn't work :( I just tried and looks like it got _so close_, it did undo the insertion of values, but the selection remained. I think that's probably debatable behavior, but isn't what Google Sheets does.
I may be mis-understanding what you experienced though, If you'd like to provide more details and/or some screenshots please file a issue https://github.com/tinycld/calc/issues
The spreadsheet app looks like a really nice boiler plate. I was surprised to learn about this amazing library digging through the docs: https://github.com/handsontable/hyperformula
Yes, Hyperformula is amazing! it's actually the primary reason TinyCld is AGPL vs MIT, doing so was totally worth it in order to be compatible with it's GPL3 license.
This looks really cool and more modern than Nextcloud. From the homepage, I was a little wary of the idea of hosting my own email server -- doesn't that require a ton of effort due to spam? Or can I use it with an external provider and use this as webmail?
yes, I should make this clearer: You do not actually host the email, tinycld uses a transactional host for sending and receiving. I also have a lot of scars from doing that in the past and I'm happy to pay someone else a few $$ a month for that service.
We support postmark right now (it has spam filtering), mailgun in the near future. Plus probably a pure smtp server for those who _really_ want to do it all themselves.
I have seen lately a number of new productivity suite.
How is the Microsoft Office compatibility managed by these tools? There is a popular SDK providing the compatibility? I can't imagine everyone reimplementing the full compatibility layer
Good question, TinyCld does uses docx/xlsx files on the drive package as the native storage for text/calc. Drive is exported via webdav so doing so lets native clients load the files as well. Locking is used though so web & native _hopefully_ do not conflict.
Office compatibility really runs into the xkcd workflow problem[1]. For the overwhelming majority of users, any of these alternative office suites will work exactly as expected. They can save and open MS Office files, and can do all of the tasks most users need. But there will always be some user who has some hyper-specific need that decide they just can't get away from MS Office. This often comes down to some plugin, or some strange behavior of MS Office that the user has come to expect. Often, there's no technical reason these plugins couldn't be moved to some competitor, but they haven't been. Frequently, there's no reason the user needs this exact workflow, but it's what they know, and they don't want to change.
So how is MS Office compatibility manged by these tools? It depends on who you ask.
This looks awesome, thank you. Kudos for supporting dark mode out of the box. Looking forward to seeing calendar and drive catching up to full dark mode.
Interesting! Will try this soon, I have very similar gripes with nextcloud et al that you mentioned. The lock in to postmark I don't love, I think I would rather have it be a SMTP+IMAP "proxy" so I can use my existing email service within the suite of apps seamlessly.
yep i know postmark wont be everyone’s fave. i’ve abstracted all that to a single golang interface so it’d be easy to swap out. i’ll probably write a pure SMTP version as an example soon
Looks promising! The multi-org feature is interesting, and not something I see very often with these types of solutions. Is the use-case that I host and manage it, and onboard my clients as users in their own orgs?
Personally I have several small (tiny really) companies where employees wear a few hats in them, this setup allows me to add people to org (and email domain) A & B while not getting C.
It is _not_ setup at all for billing or anything like that though, but that would be a easy enough feature to add
Interesting. I've tried owncloud, nextcloud, and other similar "all-in-one" solutions in the past. None ever stuck with me, for various reasons I cannot remember. I just might try this out on a weekend when I have some free time.
excellent, I've also tried all the products you mention but they all felt either too heavy or limited to me. I'd love any feedback you can offer, GitHub issues are open if you hit bugs.
Hey all, Nathan here, I'm the author.
I wrote TinyCld because Google in their infinite wisdom decided to cancel my 20 year old free Google Apps suite for "commercial usage". Which, to be fair it totaly was, and I obviously shouldn't complain about 20+ years of free usage.
But _still_, that wasn't the terms I signed up under, and nothing is more irratating than a good old fashioned rug pull. How hard could it be, right?
TinyCld is two things, a self contained workspace like the one we're all familiar with (mail/cal/contacts/drive/text/calc), as well as an easy to extend platform that brings all the batteries you'd need to write realtime web+native apps.
And yes, I used AI to write a lot of this. (really, ~200k loc by one author is a pretty good tell) Some may hate on that and thats fine, I get it. But I did look at each commit and there is a lot of bugfixing and tweaking features back and forth that went into it. If nothing else, I've got some good stories to tell here and have learned a lot.
Stack: Expo (React Native + web) on the frontend, PocketBase + Go on the backend. Standard protocols (IMAP/SMTP/CalDAV/CardDAV/WebDAV) so native clients work as well.
I'm currently using it myself with a few friends but has not been widely used beyond that.
Demo (no signup): https://tinycld.org/ and click the big Demo button.
One-line Docker install: https://tinycld.org/docs/installation Build a package in 10 min: https://tinycld.org/docs/creating-a-package iOS app: https://apps.apple.com/app/tinycld/id6762420971 Repo: https://github.com/tinycld
I'm very interested in any feedback anyone can offer. I've got a looong list of add-on packages I'm considering, suggestions welcomed!
Looks really nice. Do you plan to support this in the future? Are you planning to foster a community of developers around it, or are you thinking about hosting it as a service?
Asking for a friend, who also enjoys building projects with LLMs, but publishing and supporting them not so much.
yes, I'm planning to support it indefinitely - my company (~10 users) just started using it so we're very invested in it's success.
I'd love for people to write whatever crazy packages they can think of for it so it has a rich ecosystem. It has the ability for admins to add a git or NPM reference into the packages list and install packages on the fly like wordpress supports.
As for hosting as a service, maybe someday. I also own the tinycld.com so who knows.
I have been considering Nextcloud for a homelab install, but dreading the deployment/maintenance story there if I ever start relying on it as a source of truth. Would definitely consider a smaller option like this.
My biggest worry is your supply chain. If you're mostly using AI, would love to see you build your own library of functions and drop as many direct and transient dependencies as possible.
Nice work!
hah, so I've been fighting AI all the time as it tries to write all this on it's own vs re-using libraries. To me that's a much safer option, because the libraries all pre-date AI so I assume the authors know what they're doing.
Not to bag on Nextcloud but I do think that this is _much_ easier to understand and maintain, it's standard Go/React/Sqlite, nothing esoteric so if you did need to maintain it I'm sure anyone could pick it up. Of course I don't really know Php so that def flavors my opinions here.
I have an example of a one-shot TODO app: https://github.com/tinycld/todo just to demonstrate what's possible.
The claims you make about Go/React are similar to the claims made by PHP and Python and JS users. Basically: the thing I'm familiar with is easy - then imply that it would be the same level of easy for others.
This does look easier than Nextcloud however I'm not sure thats the tech-stack. Generally the new project is easier/simpler because it doesn't have so many years of scope-creep, work-arounds, half-imolemented-then-abandond features.
yep very true, everyone has their preferred stack, and greenfield is _always_ easier than maintaining years worth of past code.
I did look really closely at Nextcloud when it came time to leave Google apps. I really wanted it to work but also wanted:
* Realtime updates - Pockebase gives us this for free.
* A native app - React Native <- this one worked out but does cause pain with the web version, some things don't work _quite_ as well as a standard React ap would.
* Lightweight docs that work on mobile. Collabora is very full-featured but is also pretty slow. It remains to be seen if I've successfully here because we're only starting to use our docs "for real"
And also: I'm absolutely sure this has many bugs that I've yet to uncover. All I can say is that I am planning on using it for real-world business stuff so I'm sure we'll be uncovering and fixing them throughout the next year.
I like this. However, I just gave your Sheets a simple stress test by selecting a bunch of cells, then using the fill handle to populate other cells, and afterward doing an undo (Ctrl+Z). It completely crapped out and did not do what I expected...which was to return to its original state prior to using the fill handle, with the selection still selected.
Sorry it didn't work :( I just tried and looks like it got _so close_, it did undo the insertion of values, but the selection remained. I think that's probably debatable behavior, but isn't what Google Sheets does.
I may be mis-understanding what you experienced though, If you'd like to provide more details and/or some screenshots please file a issue https://github.com/tinycld/calc/issues
The spreadsheet app looks like a really nice boiler plate. I was surprised to learn about this amazing library digging through the docs: https://github.com/handsontable/hyperformula
Yes, Hyperformula is amazing! it's actually the primary reason TinyCld is AGPL vs MIT, doing so was totally worth it in order to be compatible with it's GPL3 license.
This looks really cool and more modern than Nextcloud. From the homepage, I was a little wary of the idea of hosting my own email server -- doesn't that require a ton of effort due to spam? Or can I use it with an external provider and use this as webmail?
yes, I should make this clearer: You do not actually host the email, tinycld uses a transactional host for sending and receiving. I also have a lot of scars from doing that in the past and I'm happy to pay someone else a few $$ a month for that service.
We support postmark right now (it has spam filtering), mailgun in the near future. Plus probably a pure smtp server for those who _really_ want to do it all themselves.
Add SES support.
Interesting, I wasn't aware that SES did inbound and it looks fairly affordable as well. I'll have to do this, thanks for mentioning it
Other nice options would be Resend and the Cloudflare Email Service
I have seen lately a number of new productivity suite.
How is the Microsoft Office compatibility managed by these tools? There is a popular SDK providing the compatibility? I can't imagine everyone reimplementing the full compatibility layer
Good question, TinyCld does uses docx/xlsx files on the drive package as the native storage for text/calc. Drive is exported via webdav so doing so lets native clients load the files as well. Locking is used though so web & native _hopefully_ do not conflict.
Text uses https://github.com/ZeroHawkeye/wordZero to read/write the docx, parse it into a y-prosemirror and served with yjs to clients using https://github.com/skyterra/y-crdt
And Calc uses https://github.com/xuri/excelize using the same techniques but uses plain Yjs Y.Map/Y.Array using a sparsely populated table
Office compatibility really runs into the xkcd workflow problem[1]. For the overwhelming majority of users, any of these alternative office suites will work exactly as expected. They can save and open MS Office files, and can do all of the tasks most users need. But there will always be some user who has some hyper-specific need that decide they just can't get away from MS Office. This often comes down to some plugin, or some strange behavior of MS Office that the user has come to expect. Often, there's no technical reason these plugins couldn't be moved to some competitor, but they haven't been. Frequently, there's no reason the user needs this exact workflow, but it's what they know, and they don't want to change.
So how is MS Office compatibility manged by these tools? It depends on who you ask.
[1] https://xkcd.com/1172/
This looks awesome, thank you. Kudos for supporting dark mode out of the box. Looking forward to seeing calendar and drive catching up to full dark mode.
thanks! it also has the ability for user themes but they are fairly weak. really only supports setting color swatches
PocketBase is awesome and this thing looks awesome.
One question, I could not understand if a mail provider is needed or it handles on its own?
currently only supports postmark but based on the conversions here i’m thinking expanding that will probably be the next thing i implement
Interesting! Will try this soon, I have very similar gripes with nextcloud et al that you mentioned. The lock in to postmark I don't love, I think I would rather have it be a SMTP+IMAP "proxy" so I can use my existing email service within the suite of apps seamlessly.
Hey, I just made https://github.com/tinycld/mail/pull/2 which mostly implements this. Am leaving it as PR until I can fully test it out
yep i know postmark wont be everyone’s fave. i’ve abstracted all that to a single golang interface so it’d be easy to swap out. i’ll probably write a pure SMTP version as an example soon
Looks promising! The multi-org feature is interesting, and not something I see very often with these types of solutions. Is the use-case that I host and manage it, and onboard my clients as users in their own orgs?
Yes, exactly that.
Personally I have several small (tiny really) companies where employees wear a few hats in them, this setup allows me to add people to org (and email domain) A & B while not getting C.
It is _not_ setup at all for billing or anything like that though, but that would be a easy enough feature to add
nice, I was just deciding what to use. I tried nextcloud, but I'm running a php system on my machines.
Interesting. I've tried owncloud, nextcloud, and other similar "all-in-one" solutions in the past. None ever stuck with me, for various reasons I cannot remember. I just might try this out on a weekend when I have some free time.
excellent, I've also tried all the products you mention but they all felt either too heavy or limited to me. I'd love any feedback you can offer, GitHub issues are open if you hit bugs.
Stared the repo for now, will give it a spin in this or next weekend I hope :)