Giter Club home page Giter Club logo

istsi's Introduction

ISTSI

Since I've left the ISTSI team, and am no longer maintaining this repository, all infrastruture has been moved to the hands of the faculty. A postmortem and general overview of the program is available in my blog.


ISTSI was the website and submission platform for the IST Summer Internships.

It was built to ease the work of those behind the program and to allow the candidates to have a simple, consistent and comprehensive experience.

Installation and Deployment

This project includes config files to create an environment with Nginx, PHP-FPM, Composer, PostgreSQL/MySQL and automatic backups.

  • Install Docker and Docker Compose

  • Go to app/src/, rename settings.php.dist to settings.php and fill all options.

  • Go to deployment/, rename .env.dist to .env and fill all fields. The available settings for the ENV variable are dev, staging and prod.

  • If the above ENV variable isn't dev go to deployment/nginx/tls, replace all files with your own and strip the .dist from the filenames.

  • Run $ bin/console setup.

  • Start environment:

    $ bin/console deploy up -d

When first starting the environment you will need to run $ bin/console migrate to update the database schema. This process isn't done automatically since renamed columns are deleted upon migration (potential loss of data).

To access the dev webpage go to istsi.localhost.

  • Stop environment:

    $ bin/console deploy down

License

See License.md

istsi's People

Contributors

migueldemoura avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

Forkers

marianaclssilva

istsi's Issues

Local STMP Server

Get a working STMP container with DKIM, SPF and DMARC support. rDNS also needs to be set up (add a PTR record to the DNS provider) to ensure we don't get straight to the spam folder.

Course aliases

To avoid repeating courses, we should use aliases. A common example is Computer Science: LEIC-A, LEIC-T, MEIC-A, MEIC-T all stand for a similar course.

Temporary fix for ISTSI\Auth\Fenix\Controller:login:

// Get Fenix info

$aliasesMEBiol = ['MicroBio', 'MBiotec'];

if (in_array($course, $aliasesMEBiol)) {
	$course = 'MEBiol';
}

// Persist to database

This replaces the non-supported acronym with a supported one before adding them to the database. A proper solution would involve using db relationships between courses.

Company platform section

To automate proposal submission, a company-specific area is required. To achieve that we need:

  • Independent login system, using one-time login links sent to email.
  • Company account edit page.
  • Ability to create, edit and delete proposals;

Missing production configuration

Maybe create two different docker-compose config files: dev.yml and prod.yml.
Since other configs need to be changed as well, duplicating contents might be a good ideia.
Using env variables is probably a nicer solution though.

Swap MySQL with PostgreSQL

Swap MySQL with PostgreSQL, drop PHPMyAdmin and open the database port to localhost (dev environment only).

Admin Interface

Ability to add companies and manage edition-specific settings.

Remove duplicate files

Most students use the same CV and/or CM for all proposals they apply for, meaning we store the exact same file multiple times.
A better approach would be to store a hash of the file associated with the submission and store the files themselves just once.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.