Skip to content

A WeTransfer clone created using PHP, MySQL, composer, phinx & loads of love.

License

Notifications You must be signed in to change notification settings

vdimitriad/MeTransfer

Contributors All Contributors Forks Stargazers Issues MIT License


Logo

MeTransfer*

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

MeTransfer 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.

Built with

Getting Started

  1. Make sure you have installed PHP, MySQL & Composer. (We assume you already use XAMPP, WAMPP or a similar service.)
  2. Create a MySQL user and a MySQL Database.
  3. Configure:
    1. Phinx:
      1. Rename phinx.default.yml to phinx.yml.
      2. Setup your Development (Required).
      3. (Optional, but recommended) Setup Testing & Production databases.
    2. Project Configuration:
      1. Go to private_html folder.
      2. Rename config.default.ini to config.ini.
      3. Configure the Database & other settings accordingly.
  4. Run composer install.
  5. And that's it!
  6. (Optional) You can setup a VirtualHost & Fake (local) Domain. Instructions similar to this thread.
  7. (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.

File Structure Explanation

db folder:

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.

private_html folder:

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.

public_html folder:

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.

sessions folder:

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.

uploads folder:

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.

Contributing ✨

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 ;( )

Authors

  • Dimitriadis Vasileios (WckdAwe) -- ( Website | Github )
  • Kouskouras Taxiarchis (TheNotoriousCS) -- ( Github )
    • Kranas Georgios (PlebeianDev) -- ( Github )

License

This project is licensed under the MIT License - see the LICENSE.md file for details.

Disclaimer

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.

Security

For security related issues please read SECURITY.md.

About

A WeTransfer clone created using PHP, MySQL, composer, phinx & loads of love.

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors