A WeTransfer clone created as part of an exercise
using PHP, MySQL, composer, phinx & loads of love
*Any use of Logos similar to WeTransfer & content should be taken as a joke. We are not trying to infringe any copyright laws regarding WeTransfer & its service.
- Table of Contents
- About The Project
- Getting Started
- Contributing ✨
- Authors
- License
- Disclaimer
- Security
This WeTransfer clone was created as part of an assignment for the University subject WWW Technologies on the 4th Semester of [CS Dept., University of Thessaly][CSUTH].
It is free to use under GNU-GPLv3 license and anyone wanting to can experiment and improve upon our implementation.
You can have a look at WeTransfer and even use their services, or have a look at our own Frankenstein implementation at MeTransfer.tk.
- PHP
- MySQL
- Composer - A Dependency Manager for PHP
- Phinx - PHP Database Migrations For Everyone
- And an innumerable amount of love ❤️
- Make sure you have installed PHP, MySQL & Composer. (We assume you already use XAMPP, WAMPP or a similar service.)
- Create a MySQL user and a MySQL Database.
- Configure:
- Phinx:
- Rename
phinx.default.ymltophinx.yml. - Setup your Development (Required).
- (Optional, but recommended) Setup Testing & Production databases.
- Rename
- Project Configuration:
- Go to
private_htmlfolder. - Rename
config.default.initoconfig.ini. - Configure the Database & other settings accordingly.
- Go to
- Phinx:
- Run
composer install. - And that's it!
- (Optional) You can setup a VirtualHost & Fake (local) Domain. Instructions similar to this thread.
- (Optional) Setup a CronJob (for
public_html/cleanup_expired.php) from your website hosting to cleanup user uploaded files when their time expires. If you chose not to have a cronjob, files are deleted when a user attempts to download an expired file. To learn more about cronjobs you could read this thread.
This folder contains all migrations (Overly Simplified, Portable instructions to build MeTransfer's Database) generated by Phinx.
To read more about Migrations check out this thread and phinx docs.
This folder contains all things that shouldn't be visible to the client. Usually called "backend", this folder contains Scripts, CronJobs, Mail Functions, Website Templates and all our Sensitive Information.
This folder MUST NOT BE VISIBLE to any end-user.
If you are sharing such a folder, make sure to remove any personal credentials, such as the config.ini and replace it with a more generic config.default.ini.
This folder contains all publicly accessible urls & objects, such as the Index (main page), Download Page, Assets (icons/css/js/plugins), and the Admin & User Page.
They do contain some minimal code logic too, but usually stuff about what to execute from private_html's codebase after a form is submitted.
This folders contains all user sessions, which is files that keep user-preferences, status such as logged in, username e.t.c.
We use cookies to handle sessions and authenticate users.
To read more about Sessions and cookies see this thread.
This folder contains all files uploaded by users. They are periodically cleaned using a CronJob (cleanup_expired.php) which you must setup. A normal user should not have access to this location, thus it is outside of public_html.
Files are downloaded using a friendly-name generated url.
Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.
Thanks goes to these wonderful people who contribute✨:
It takes a lot of people to make a winning team. Everybody's contribution is important. - Gary David Goldberg
Apparently this project is not a winning team. - WckdAwe
Or is it? Prove me wrong (See what i did there? Huh? No? Oh ;( )
- Dimitriadis Vasileios (WckdAwe) -- ( Website | Github )
- Kouskouras Taxiarchis (TheNotoriousCS) -- ( Github )
-
- Kranas Georgios (PlebeianDev) -- ( Github )
This project is licensed under the MIT License - see the LICENSE.md file for details.
All the information on this repository is provided in good faith, however we make no representation or warranty of any kind, express or implied, regarding the accuracy, adequacy, validity, reliability, availability or completeness of any information - see the DISCLAIMER.md file for more details.
For security related issues please read SECURITY.md.
