[CURRENTLY DEBATING LEGALITIES] GitCDN/FreeReplCDN: A free CDN hosting service, using the power of Github

PROGRESS REPORT

12% COMPLETE

PROGRESS: Working on Github API and Web Design


I have an idea

So basically it’s a free version of “Google Drive”, but you can upload your own files to this service which has very generous size limits. This will free up egress, account storage, and allow reuse of assets (such as your favorite CSS template that you made).

I’ve decided on this project because I don’t think that this would be too difficult (starts to think about Idkwhttph’s Pokemon Adventures)

Here are the specs:

How it works

People can create accounts (replit OR github) on this website to be able to upload files to the server under a generous quota (more then replit) to a server of their choice, namely Github or Replit (only if possible). Once the upload is complete, users will then be able to access their content through their account-name-based suffix, up to a certain limit. Users can increase this quota by donating cycles on a repl, which will be checked via GraphQL.

Roadmap

Task Status Notes
Basic API for Github Not started Rename a file with github api? - Stack Overflow Repository contents - GitHub Docs
Basic API for Replit Not started REDACTED
Express.js rudimentary UI to link basic API Not started Just boilerplate HTML, match the basic structure of the finished product. Make it function.
No-auth prototype of finished website, minus CSS Not started Finish up the basic framework to work, and add text and labels. Basic CSS if needed,
Clean up the code Not started Very important
Add auth and session cookies Not started
Add quota Not started See Prices chart
Clean up the code Not started Very important
Finish CSS Not started

Pricing

$0 Hobbyist $2 Hacker {BEST DEAL} $5 Programmer
1 GB storage 4 GB storage 10 GB account storage
24/7 uptime 24/7 uptime 25K requests per day / 100K per month
1K requests per day / 10K per month 5K requests per day / 25K requests per month 20K writes per month
1K writes per month 4K writes per month Choice of Replit and Github as file host
Choice of Replit and Github as file host Choice of Replit and Github as file host API access
Standard content delivery Fast content delivery Teams?

Join Now!

What aspect(s) would you like to work on?
  • API (Github and Replit file storage)
  • Functional website design (Express.js, HTML, JS)
  • Web-dev (HTML, CSS, JS)
  • Code refactoring (Cleaning up code)
  • Other (please comment)!
0 voters

Please reply with your programming experience and/or past projects for a better chance of being selected.

LIMIT 8 people.

3 Likes

Linking an account on this site to the username of the Replit user is not the best idea, because if a user changes his name to Replit, he will lose his files forever, and someone else will be able to change his name to Replit to the name of the first user (the one who changed the name before)
and get access to his files.

4 Likes

I am not sure what you mean, because I have not linked any users or profiles in my post. I am expecting that nobody will change their username in this fashion, and if such an event should happen, then I will make sure that gets addressed.

2 Likes

I assumed that you would not understand me, since I use a translator.

1 Like

After reading your paragraph a few more times, i realized that you were talking about the username suffix system. Well, I guess that is a very valid problem.
I would surround the username with the user id (which is constant IIRC), and provide an endpoint to automatically transition all files to the new account if I get the time.

3 Likes

The ID should be randomly generated (think import random) and salted as well as hashed.

3 Likes

I meant replit user id, not account id. picking usernames could be implemented later, but the big username space wouldn’t be easy to moderate (for usernames such as replit, admin, administrator, static,css,hosting,etc).
However, session tokens (aka connect.sid) wouldn’t need to be hashed or salted as using a hashed copy on the server and the client wouldn’t be useful (only to standardize the length).
Hashing is only required when there is a server leak, which is at the very bottom of the roadmap.

4 Likes

This is all I do in collaborations, lol.

oh uhh well you know me, I do backend stuff, I have a decent bit of experience with Node.js

1 Like

User IDs could be used instead of usernames (to avoid that).

5 Likes

I’m good at frontend
My only Website (I’m too lazy to make another one): https://simple-clicker-game.snakeyking.repl.co/ (sorry it’s trash Ican do better)

4 Likes

Ive come up with a new system: id linking (github id, replit id, email addressed for others) with custom usernames. Ive realized that having two prefixes is hard to manage

4 Likes

Are you using SQL for your db? If not, having multiple IDs will probably make your life harder :slight_smile:

3 Likes

Probably not (especially since i’d have to store it in a file and all commands are strings). Instead, I’d use firebase with my auth framework.
Also, I would differentiate ids with “prefixes”, such as R-48382 for replit, G-383483 for github, and E-noreply@google.com for emails. Username changing is annoying, so why dont I DIY it and prevent username changing?

You could use Postgres (which is easy to run inside a repl, and free to use). Postgres works great with Node.js, and it’d probably be easier than Firebase to use :slight_smile:

2 Likes

That could get messy fast :eyes:

3 Likes

How does it save files?
Does it save in a database or does it save them in Replit and GitHub?


You’re probably using Node but:

db['John Doe'] = {
  'replit': 12,
  'github': 35,
  'email': 'john.doe@gmail.com'
}
2 Likes

JSON should never be used for anything remotely like production (its performance is even worse than SQLite)

3 Likes

Also, you’d have to iterate through every single user to find someone with that method, making a DoS attack as simple as creating lots of accounts and logging in to them over and over.

3 Likes

objects and JSON are different.
btw same thing for strings

1 Like

Id just create reverse entries for search-by-username and search-by-id.

1 Like