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
- ftp
- postgresql
- pyftpdlib
- python
- sqlalchemy
Log in or sign up for Devpost to join the conversation.