Show HN: Horizon – Private alternative to Imgur (horizon.pics)

361 points by sweca ↗ HN
Hey HN, I'm James, a 17-year old full-stack engineer from Canada with a strong passion for building software. During the day, I work for a California-based startup, and in the evenings, I enjoy working on side projects[1][2].

For the past 3 years, I've been building and iterating on a product I called Horizon Pics, which is a file hosting service, similar to mainstream services, like Imgur. Horizon allows you to quickly upload and store all types of files, from images and video, to PDFs and other documents. The biggest differentiating factor is that Horizon's incentives are much more aligned with you, the end-user.

Unlike Imgur, Horizon has absolutely no ads, doesn't sell your data, has built-in security and privacy controls, and is fully focused on your file sharing needs. No social media or other bloat.

This past week, I've launched a rebrand of Horizon which features a brand-new desktop app called Alpine[3], which serves as a local companion to Horizon. With it comes the capability to auto-upload screen captures and upload your clipboards as shareable pastes. For extra privacy, clipboard sharing can be automatically deleted after one view, or end-to-end encrypted with AES-256-GCM client-side. The desktop app is completely free to use! It's powered by Tauri using TypeScript, SvelteKit, Sass, and Rust.

Horizon offers a free plan with limited storage and upload sizes, while the paid plan offers higher limits.

Let me know what you think about the landing page[0]. Does it provide enough information as a new user?

[0]: https://horizon.pics

[1]: https://httpjames.space

[2]: https://github.com/httpjamesm

[3]: https://horizon.pics/alpine

218 comments

[ 4.1 ms ] story [ 251 ms ] thread
Incredible timing, I was just looking for somewhere to store and share my video game clips. This looks more appealing (cheaper) than Streamable.

I love that there is a Linux Appimage but does it also work with just a browser?

Yes, absolutely! You can use the built in uploader[0] on the web dashboard which works in parallel and supports large files.

[0]: https://horizon.pics/help/articles/start-uploading-files

Thank you!

Some feedback after using it for a few minutes:

- When clicking the "+ create" menu, left-clicking whitespace on the page does not close the dropdown

- Home page takes very long to list videos (even with a single video). Updates after moving videos/deleting videos/creating folders also feel unresponsive.

- On home page or inside folders, videos do not have thumbnails (just a generic camera icon)

- While a video is being moved to a directory (spinner be spinning), the delete/move options under the search bar are still present

- Would like an option to apply resize/compression settings to videos on upload to help manage storage space

- When failing to upload due to size limit, the UI does not say what the size limit is

I think this is a promising service so I'll upgrade and hope the quirks improve over time!

Edit:

- Trying to upload 30-ish 100-200MB videos at the same time in the web UI, many error with `Unable to mark session as finished`.

Thanks for upgrading! And sorry that you ran into some speed bumps.

1. Good catch. Will improve on this.

2. I'm not sure what could be causing this. My account with thousands of uploads loads in less than one second.

3. Thumbnails are not supported due to compute and processing considerations, but will investigate this.

4. Good catch.

5. Compression can be compute intensive, but will investigate this further.

6. Will add that in.

7. Hopefully this isn't too ubiquitous? I'll investigate what's happening - but from preliminary analysis, it looks like a chunk may have failed along the way.

Re: 7 I think in the end all the videos did upload successfully, but the client UI stopped reporting progress at some point.

A couple more suggestions:

- Would like a select-all button instead of clicking videos 1 by 1

- An option to switch from grid view to list view could be useful

- Home UI shows 25 items per page but the grid has 3 columns so the last row is never full - which makes it seem like there are no further pages.

- When moving items, the item count in the title of the destination-selection dialog keeps increasing for every move operation. I think items are not deselected after moving?

I've added a new redundant check that will ensure all chunks are uploaded before marking the large upload as finished. Hopefully this resolves the issue you were facing. If not, please do send me an email at the address listed at https://horizon.pics/help.

As for those files that failed but still show up in the dashboard, it means they're stored incomplete, and as such, will be automatically purged in 24 hours. I will work on hiding them in the dashboard.

Thanks for the great support <3
It's been almost 2 weeks so you might never read this, but here's a little progress update on your reports. Many bugs fixed and several features have been implemented, including:

- List view for files - Select all - Video thumbnails (MP4, subject to eligibility depending on encoding)

If for whatever reason, you don’t find traction, and/or get bored of running it, I’d be interested in acquiring it into a nonprofit entity and running it in some sort of public good fashion. But put your heart into it first. Looks great, really well done.
Thank you so much! Your compliments and generosity are very much appreciated.
Very cool! Congrats on the launch!
Congrats, it looks great, love that you have Linux app support.

Question, have you done the business analysis to know how long you can afford to run the system when giving away 500MB? Even your paid model seems really inexpensive. Do you have enough margin to immediately not go broke?

I am not trying to throw shade, I am just curious because it almost seems too good to be true since you aren’t running any ads and your price is free and/or cheap

Yes. Over the past 3 years I've been researching and re-iterating different monetization strategies. While I don't want to divulge exact operating costs, I can tell you that it's sustainable to provide free storage and the amount on the paid Everest plan.
What kind of backup and disaster recovery plans do you have in place, if any? Are they tested?
This type of analysis is kind of pointless because the chances of the key assumptions being correct are almost none. How many free vs paid users will sign up? How much resources will they actually consume? The answers aren’t known until you test the market and probably change over time too.

That said, if he’s just bootstrapping this as a hobby with low overhead these prices are just fine. He probably actually makes a good profit once his user counts climb a bit. This type of service can be easy to keep afloat in these prices is my gut feeling and that’s probably good enough.

Besides there are some easy solutions to an emergency situation. Raise prices. Stop offering free plans. Change the resource limits. Etc. so much he can do before going broke.

This looks pretty cool, does it work with ShareX? Where you can directly screenshot and upload the images from your desktop?
Yes! While Horizon Alpine isn't ready for Windows yet, ShareX support is built in. Simply sign up, visit Settings, and download the configuration files under General > App Configuration. There are configurations for both files and links/pastes uploads.
Impressive stuff - especially for a 17-year-old working in their spare time! Best of luck, not that it looks like you'll need it!
Congrats on the launch! But, something that stops me from using a number of services is the sale of fixed size plans where I'll typically either under utilize them (e.g. do I have 100 GB of screenshots to upload) or I'll over utilize and might not have an upgrade path immediately available for more storage.

I tend to toss my photos in backblaze or S3 for this reason -- UX is severely lacking but I pay for what I use. I'm curious how you landed on the subscriptions you chose + whether you'd consider usage based plans?

I understand where you're coming from.

Most people do not have 100 GB of media on hand, nor will they probably in the next 5 years. As a result, it's basically unlimited from a reasonable usage standpoint. Before adding a 100 GB cap, I actually experimented with having "unlimited storage", but this can go wrong in many ways. I've spoken to companies in the VPN and cloud storage industries and having unlimited anything can go very wrong, especially if your service is promoted in a problematic context. e.g. unlimited cloud storage in a data hoarding community. By at least adding a cap, I can calculate a maximum cost for every user to influence my financial decisions and restrict abuse.

As for pay-per-use, no plans for now. Kagi's CEO had a really nice discussion about this on their forum and on HN. Simply put, for the demographic I'm targeting, which is quite broad, the typical user would likely get turned off by a pay-per-use model.

I've also priced Everest lower than other paid services, such as Vimeo and Gyazo, while including extra benefits.

> Most people do not have 100 GB of media on hand, ...

I have over 130 GB of media and really just started taking pictures two years ago. My mother for sure has way over 100 GB of media. My gf too. My father also has over 100 GB of media. And we all are not photographers or people who must take pictures of everything. 100 GB is not that much really, especially since everybody cat take 4K pictures and record 4K videos. Who do you mean by "most people"?

By the term "media", I was referring to OP's potential usecase of Horizon, like their screenshots and screen recordings.

I think you're framing Horizon as potential photo backup, in which case, it is not designed nor meant for that.

[flagged]
Wow, it’s so cool to be rude to a 17 year old that started their own file hosting business at 14. You’re so smart, we all think so!
Thank you! I've learned a lot over the years and a lot more during this HN launch.
Looks like a great service - kudos! Hope it succeeds and competes with imgur!
Thank you! I'm trying my best.
I've really liked Cloudflare's R2 for this usage myself. YMMV of course.
How do you upload content to R2? Someone else mentioned Dropshare, but it is iOS/macOS only. I need a cross-platform solution.
Very clean and easy to use.

90% of my coworkers with “decades of experience” and “senior” in their titles would not even be able to build something like this in their full time. Let alone part or spare time.

Thank you! It took quite a few iterations to get here. This time I tried to focus on reducing friction as much as possible, learning from other successful apps along the way.
(comment deleted)
Not to diminish the work of OP (the website looks really clean), but I don't think I know any serious experienced engineer who couldn't create an image sharing website
[flagged]
Wow, super impressive. I wouldn't even have dreamed of making something like this at 17.
Should add the names of your competitors under the logos. I'm sure they're very famous, I'm assuming Imgur and something else - but I don't recognize either of the logos.
Good call! The second one is Gyazo.
This will be a solid display of confidence.

That'd be cool if the self-hosting use-case was supported in addition to your main public site.

Throw a writable path or s3-compatible bucket in a config, set an admin password, and away..

Other folks could finally stop rewriting the basic aspects of image upload hosting. Wouldn't that be a nice gift?

Looks great, and clearly a lot of time and thought invested. Not news to you, I'm sure, but these sites typically only last for a while. Because nobody has really hit on a way to subsidize a reasonable free plan enough to pay for the bandwidth it collectively consumes, and to implement enough spam protection. Especially once it hits a certain adoption curve. So they either die or find a way to push ads, like imgur did. This is so nice though, I'm really rooting for it to find a way.
Thanks! It's been operating for the past 3 years without any ads or third-party trackers, and I don't have plans to shut it down for the forseeable future.
No one ever starts these things with plans to shut them down, the question is how much money do you have for this right now, how much money is it burning per unit of time, and how long will that last if no one pays for a paid plan. I'm not asking you to answer those questions, but pointing out the reality of the economics of the situation. If an image goes viral, can you pay a 10x or 100x hosting bill? For how long? How much are you commiting to spend before shutting it down becomes an attractive option?
These are good questions to ask. Right now, the monetization strategy is profitable.

If an image does go viral, which has happened before on popular Reddit posts that hit the front page, the infrastructure should be able to handle it for a while, and it should not be costly.

you should protect yourself from free plans going viral and costing you more than you'd like with rate limiting rules of some kind.
I see your point, but the business model can sustain a large influx in free signups. I will keep this in mind though.
(comment deleted)
I can, right now, go find dedicated servers with 1gbps port that will deliver continuous 800Mbps of traffic 24x7, for $35/month. Bandwidth is not as expensive as people think.
> Bandwidth is not as expensive as people think

Now we only need to explain that to AWS folks

Exactly; I still remember reading the imgur announcement post on reddit which had all the same descriptions. They were ad free and they were aiming to be great forever. Now though they're the "big bad".

https://www.reddit.com/r/reddit.com/comments/7zlyd/comment/c...

In 2016, Imgur raised $40 million in funding from investors, valuing the company at around $500 million. In 2021, Imgur was acquired by the media company, MediaLab, for an undisclosed amount, reportedly around $200-300 million. Alan Schaaf, the CEO and founder, reportedly owned around 40% of the company at the time of the acquisition, which would have netted him a significant amount, estimated to be around $80-120 million.

why does everybody here think that imgur is a failure in light of OP's stated goals? His stated goals are the same as imgur's stated goals. The imgur outcome is the stated goal of most of the people here.

Think a little bit more inside the box.

(comment deleted)
So the goal is to make another unsustainable business, make everyone use and love it, then sell it to someone who will make it uterly shitty with the hopes of squeezing at least a bit of money out of the people who now rely on it, before it inevitably dies?
The goal is to make “fuck you money” then tell everyone, including users, to go fuck themselves. The specifics are up in the air.

Don’t forget to talk about the “wonderful journey” it has been when announcing the sale.

> sell it to someone who will make it uterly shitty

Imgur is still good. It's just not great anymore, and it's a long way from shitty.

Imgur has lasted a good while.

I’d argue that having a service that exists in any form is a success. The fact it’s used so heavily despite your opinions and being loaded with ads means people value it and are better off than if it never existed. If the creator here could create the same but with no monetary upside directly, even just having the notoriety and putting it on his resume would translate to dollars indirectly. It’s a side project, chill.

"why does everybody here think that imgur is a failure"

Because what everyone on the internet wants is a place that will just friggin hold images and respond to HTTP requests with that image

"in light of OP's stated goals"

because op seems to want to build a sustainable business, but at a certain scale it just becomes unsustainable because you become a CDN that is paid for per-seat. So they will inevitably need to either not scale (which makes them not what the internet wants), or scale by either becoming Cloudflare or becoming a social networking site, so that they can either pay their bills via usage-based-billing or pay their bills via sweaty VC money.

The cycle of image hosting continues

https://drewdevault.com/2014/10/10/The-profitability-of-onli...

I've swapped to using the app Dropshare hooked up to a Cloudflare R2 bucket myself

what has been your experience with this alternative you have settled on?
Plenty of ways to send an image to it - right click image in Finder, share menu on iOS from photos etc, replaced the built in macOS shortcuts for taking screenshots with Dropshare so a quick upload button to share a screenshot.

That combined with pointing a subdomain at the r2 bucket means I can share images virtually instantly without thinking too hard about it (the r2 URL is copied to clipboard once the image is uploaded). Having a personalised vanity domain is a cherry on top too http://img.cohan.dev/AXsaG.jpg

Also means it's on me to make sure images are available in the future and I trust me to keep my images online forever more than sites that have to find a way to fund themselves eventually.

Just letting you know; Dropshare is now compatible with Horizon.
The spam protection is worth repeating.

I made one of these back in 2005 and it was inevitably gangloaded with questionable content like p*rn, malware, software license keys, copyrighted material, etc.

I remember a few years ago when some starry eye coder on Reddit made a page that would load and display the latest uploads to Imgur as tiles.

It soon became apparent that this is not ideal.

Same thing with tools that would try to archive Imgur, the results basically need manual review because the resulting dataset is a loaded gun.

Just p*rn? You can consider yourself lucky. One week after publishing my own public instance of an IMGUR-like, I woke up with +150 emails from my host provider and a final one telling me that they had shutdown my server.

Someone had posted ~500 pictures of "naked kids", a Canadian bot had found them and notified my host provider, who automatically took action.

Everything happened in less than 30 minutes, between the first picture being uploaded and the server being shutdown.

First I tried to restart the server and clean it, but I received new notifications as soon as it was online. So I just restored the last backup before it all started. And I removed the ability for public users to upload pictures.

I will never ever publish a service allowing user to upload publicly any content.

How is it private if you can't self host?

(I'm hoping I missed something :)

Privacy and security here are being commingled under the banner of AES encryption at rest, which is apparently disabled by default.

I always wonder, if your marketing pitch involves security features, but those features are off by default, aren't you technically pitching your lack of security?

And if $company controls the keys.. what happens once funding dries up? Yeah.. nothing personal but we've seen it previously.

In the meantime, OP and Co. could create an open standard for image hosting, and have a lasting impact on the order of S3. Wouldn't that be something?

Here's to hoping.

Encryption at rest is disabled by default because many users do not want to keep track of all of their encryption keys, which are not stored by Horizon when that setting is enabled.

There are also other security features, like end-to-end encryption for pastes, but like mentioned before, not everyone wants to lose the ability to preview their content in the dashboard.

By giving the user a choice, I can cater to both crowds: one that prefers convenience, vs the other which prefers the most security.

Edit: To clarify, all files are already encrypted at rest with a key I control. But with Encryption enabled (capital E to distinguish the feature name), it is encrypted again with a key Horizon won't store.

Clear and concise. Well done. Impressive for a 17 year old.
Have you done an Independent security review of these features? What's your CRS score? Do you have CVE fix SLA in place? All these features are good if this was. 2000 website but a single vulnerability in any one of the vendors of your tech stack will compromise your users
Server side encryption is handled using the Go standard library. A more detailed breakdown of the process can be found in the Help Center. TLDR: It's reputable, and best practices are followed through cryptographically secure generation, random IV, high entropy keys, memory hard hashing, etc.

Paste end to end encryption uses the native window crypto subtle API, widely used and reputable.

Coming from cyber security one thing I have learnt is no matter how many layers of security you add nothing is fool proof, I would strongly recommend doing an Independent review getting if not an international certification like ISO or GDPR then something domestic, I like what Mozilla does https://www.mozilla.org/en-US/security/advisories/, this really will enforce trust in your users as today it's really hard to trust websites
[flagged]
Haha. Didn't even realize that. The goal was mountain-themed metaphors. Hopefully the "Horizon" prefix is enough to differentiate.
(comment deleted)
I have always wondered how "hosting" sites deal with malicious actors, like sharing of copywritten stuff (like movies), xxx stuff or worse (cp).

Is there content moderation at the backend of Horizon?

For privacy reasons, there's no scanning. I rely on user reports to determine whether to take content down.
This is a legally...risky strategy. You built a cool thing but unfortunately when you put cool things online they get used for the worst possible purposes.
Yes, I understand there is an unfortunate risk. However, I oppose file scanning, and so do many users, as we've seen with the Apple scandal.

If any content is uploaded that violates the terms of service and is reported, they will be deleted as soon as possible, and that user will almost certainly be permanently banned.

The terms of service also limits my liability.

I don't believe it is feasible to run an image hosting service with your intended CSAM management plan.

Based on this comment thread, I fully expect your site will soon host CP/CSAM, if it doesn't already. Other image hosting services devote extensive resources to engineering a solution to this problem (one that is more robust than user reporting). I would not expect you will be able to avoid this work, and avoid liability.

Edit: I just noticed you're quite young. Congrats on all the great work. I think this CSAM thing could bring misery your way so I hope you find this comment helpful. Good luck out there.

The terms of service cannot shield you from federal law. Not sure if you're in the US or elsewhere but similar laws are prevalent around the world - in the US federal law prohibits the production, advertisement, transportation, distribution, receipt, sale, and possession of child sexual abuse material (CSAM).

This is an issue that could ruin you. The only reason it hasn't already is that the service isn't big enough yet. You undoubtedly already have CSAM on your network and any reasonable person with experience online would expect that, which is an important standard for you to consider. You're starting your own projects online at 17. You will do a lot of cool stuff in your life. Don't let this kill that inertia.

My 2c.

Your site offers private hosting; how do you expect reports to happen? The people sharing the CSAM won't report it; they're the ones that want to abuse your site. They'll happily share the content privately among themselves and you'll never know until the police knock on your door. A reporting-based system only works if the images are public and available in a feed so that you can "crowdsource" your moderation. It doesn't work at all--not even a little bit--when the posts are private. I urge you, strongly, to reconsider your plan here before something bad happens. I don't get the sense that you grasp the seriousness of this concern.

Your terms of service shields you from nothing. It doesn't limit your liability here at all.

I have some experience helping previous jobs block bandwidth abuse from user uploaded content. That lead to inadvertently finding some pretty bad content. I would figure out some way to have someone else review the content or at least some kind of automated scanner you can use to pre-check the reported content before reviewing it yourself.

Some stuff is hard to unsee.

Edit: I wonder if a local LLM (to help with privacy concerns) would be a good option or not to at least identify anything obviously bad. Wish I had more concrete suggestions.

You absolutely have a point. But for me, I'm not sure how to balance privacy and safety. Is my service really private at all if I'm handing off user files to a third party to do who knows what to scan for bad content, and potentially risk users through false positives?

Edit: A local model could work, but that can be quite compute intensive and therefore expensive.

I meant it only for the reported content so that is, to me, a proper balance because that's kind of your legal requirement[0] to take down content which is reported. But since that's ripe for abuse the proper way is to basically first hide the content, review+confirm it's bad, and then take proper action.

So I would try asking around or thinking of how best to handle the specific reported cases without exposing yourself too directly.

[0]: I am not a lawyer

There's no balance to be had--you must prioritize legality over privacy. You will be storing CSAM if you don't do something. You may already be storing CSAM. This is no joke. This is real and something every image hosting site deals with. You need to take it seriously. This is a "you could go to jail" concern, not a "this project might not work out" concern. The ability to store and share media privately while knowing it won't be scanned for abuse, with a free tier that doesn't even require an email address to sign up, is begging to be used for CSAM and other illegal activities. That's the sort of site you'd set up if your explicit goal was to attract CSAM. MEGA offers a similar service and they are severely burdened with abuse.
Get ready for pull request from all kind of organizations. We had something similar a few years ago, when it became a bit populair, it got bombarded with all kind of illegal stuff like cp. We had a contact by the police to notify them when to report the illegal stuff. We stopped it because we had to implement continues monitoring of what was uploaded.
Why don't you have cloudflare caching enabled on the images?
For privacy reasons, it's kept out of Cloudflare's cache. But one could argue that it doesn't matter since traffic is flowing through Cloudflare anyways. What do you think?
Yeah it's going through CF anyway. I also don't live near Europe or North America and noticed even small images take over a second to load, would be nice to have images cached locally after they are opened for the first time
Got it. Thanks for your feedback. All servers and user content are hosted in the EU, so for some parts of the world, it may not perform as intended. I've also thought of creating replicas for latency reasons, but it does introduce extra costs.
It's not a real option. You'll eventually get banned or forced to pay for an enterprise plan if you try to use Cloudflare's CDN for an image hosting site where the origin is outside of Cloudflare. They require you to use R2 or Cloudflare Images.

From their terms: (emphasis mine)

> Unless you are an Enterprise customer, Cloudflare offers specific Paid Services (e.g., the Developer Platform, Images, and Stream) that you must use in order to serve video and other large files via the CDN. Cloudflare reserves the right to disable or limit your access to or use of the CDN, or to limit your End Users’ access to certain of your resources through the CDN, if you use or are suspected of using the CDN without such Paid Services to serve video or a disproportionate percentage of pictures, audio files, or other large files. We will use reasonable efforts to provide you with notice of such action.

https://www.cloudflare.com/service-specific-terms-applicatio...

Good catch. Forgot about this terms of service clause.
Are you not using R2 for storage?
Maybe stupid question but can video files uploaded be played in the browser? I’m always frustrated when I want to share a game clip with friends and it seems like the options are YouTube which is overkill and a few services like streamable that are too expensive for just casual sharing
Yes! Supported file types can, such as MP4. Other video formats are not currently supported for streaming (can still be uploaded for download) due to browser restrictions and compute considerations.

For supported video types, Horizon is optimized in the sense that it recognizes videos and allows viewers to stream it in chunks for seamless watching.

Why not have the user's machine do the encoding into whatever format is cheapest/easiest for you to support? Could even divide user payloads into chunks and p2p it, bittorrent style. No compute needed, beyond a tracking server that can be very cheap to run
Transcoding client-side still has considerations:

- What if the user's hardware is not performant?

- Transcoding is intensive, so their machine will become slow

- Even wasm based ffmpeg will not be as efficient and has its own issues

- Takes a very long time

1. Then setup a worker thread with a very high nice value, like 19. Limit your throughput with tick-based compute (sleep if you're using too much compute)

2. Not if you do as proposed

3. Efficiency is not your problem, as you've stated with the previous 2 requirements. Your algorithm doesn't have to be maximally efficient if it takes a while to compute (eg you're using sleep in it)

4. Doesn't matter, most users of this service will only be taking a few photos or videos a day. Offer a paid service upgrade for heavy users who cant handle the upload times.

That's awesome. I think I read somewhere that everything is hosted in EU? Because man... its painfully slow uploading a 600 MB video from east coast US, and I have a GB line.
Yes it's hosted in the EU. Sorry about your slow upload speeds. I'm in Canada on the east coast and it's still decently fast for me. Although, the uploader can be optimized further (using multiple threads for each file rather than single thread per file), so they may or may not improve after that.

In the (possibly near) future, I do plan on scaling to the NA to give us better latency.

Out of curiosity, why did you name the paid plan Everest?
If you didn't notice, the logo has a mountain inside the first "o". "Everest", as in "Mount Everest", follows the theme of mountain metaphors. Mount Everest is also a high point, which symbolizes the fact that the plan gives you higher powers/limits.
So... it's an S3 bucket with a CDN?
It's an impressive lot more. There's a desktop app for mac and even a beta version for Linux.
So it's an S3 bucket with a CDN, and a file upload client...
For a Linux user, you can already build such a system yourself quite trivially by getting an FTP account, mounting it locally with curlftpfs, and then using SVN or CVS on the mounted filesystem.
"Full-stack engineer" is usually a job title or career, I find it weird to introduce oneself as a "17-year-old full-stack engineer". Is it just me?

You certainly have the skills but can one be an amateur professional?

I do have a job as a software engineer in the professional world. I do both professional work and amateur side project work. Did I miss something?
Nevermind then! I assumed 17 was too young to have a full-time high-skill job, if I assumed wrong then apologies.
You obviously did
Just wanted to applaud you — I'm over twice your age and would not be able to create something like this.

Can I ask when you started programming/building things? Was it a natural interest or did you receive encouragement from someone in your life?

Wishing Horizon all the best, excited to use it!

Thank you so much!

I started programming at around 9 years old in MS Batch. By making TUI apps, I learned the fundamentals, like variables, logic, functions, etc.

The interest actually stemmed from gaming. I was playing Minecraft and I was like, "hey, why can't I make cool stuff like this?" Spoiler alert: I did not remake Minecraft lol. My father was an early adopter of tech, like when he purchased the first Macintosh, so he also encouraged me into the field.

Great work, and portfolio looks great too. Most professional devs can’t get a product out, so you’re on the way.
Hosting user generated content is one of the quick ways to run into awful content.

You have to take the necessary precautions, both legal and technological, to prevent awful content from becoming problematic.

Also according to your own terms of service you cannot access the website yourself, that is odd.

Under the Adult Content section, yes, if there is adult content, the user must be 18 years of age or older. I see the irony in this.

However, for other usage of the site, the privacy policy says that the minimum age is 13 years old.