What is it

Inspired by SSH tilde servers, ftp.social is an experiment in building an FTP-based social network All interaction with the service is through FTP. See the website for more information.

How I built it

The project is mainly built around the pyftpdlib library, reacting to the many hooks triggered by FTP events (file uploads, etc). User information and follower relationships are stored in a PostgreSQL database. All this is hosted on Google Cloud, using Compute Engine and Cloud SQL.

Challenges I ran into

The hardest part of building ftp.social was dealing with network issues. FTP wasn't designed with NATs and firewalls in mind and easily can easily get confused about where to send data. Reading through RFCs that predate my birth and getting caught up in minute technical details was not fun.

What I learned

I feel quite confident working with FTP, now knowing how it works internally. This was also the first real-world website our web developer worked on.

What's next

In the same spirit of using the increasingly archaic FTP, I plan to add a read-only Gopher interface. If technically feasible, I also plan to add a mailbox system where users can receive text emails. (A user named example could receive emails in a mail folder in their home directory at the example@ftp.social address.) In the very long run, it's possible I could rewrite the whole thing from scratch, FTP server included, in order to be able to design the system in a more efficient way with certain hooks.

Built With

Share this project:

Updates