Skip to content
This repository has been archived by the owner on Mar 21, 2024. It is now read-only.
/ rym2 Public archive

C868 Capstone Project

License

Notifications You must be signed in to change notification settings

crimsonstrife/rym2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

C868: RYM2 - Capstone : College Recruitment Application

A PHP-based web application for handling student information for college recruitment efforts for a business. Allows students to register interest on a front-end portal. Users for the business can log into an admin dashboard to view or interact with submitted data.

Disclaimer: This project is strictly for educational purposes only. Any similarities to real-world applications, products, or services are purely coincidental. The author is not responsible for any misuse of the information provided in this project. The author is not responsible for any damages or losses caused by this project. Any data included in this project is purely fictional and is not intended to represent any real-world data.

Status

MIT License PHP Composer - Build Node.js - Build

Table of Contents

Table of Contents

Authors

About This Project

This project aims to provide a web-based application for a business to handle student information for college recruitment efforts. The application stores student information in a database, and allows users to view, edit, or delete student information. It also allows users from the business to add things like schools, programs of study, and other information to the database that the students can select from when registering for a job or internship. A base database schema is provided in the project and should be deployed to a MySQL database during installation.

Built With

Front-End

Bootstrap Badge Font Awesome Badge jQuery Badge Chart.js Badge OpenStreetMap Badge Leaflet Badge HTML5 Badge CSS3 Badge JavaScript Badge

  • Languages: HTML5, CSS3, JavaScript
  • Frameworks: Bootstrap ^5.3.2, jQuery ^3.7, Chart.js ^4.4, Leaflet ^1.9.4/Leaflet Geosearch ^3.10.2, Simple-DataTables ^9.0.0, Popper.js ^2.11.8, iro.js ^5.5.2 , Select2 ^4.0
  • Libraries: Font Awesome ^6.4

Back-End

PHP Badge Composer Badge npm Badge .ENV Badge

  • Languages: PHP ^8.1.2
  • Frameworks: Composer ^2.6.6, npm ^10.3.0
  • Libraries: .ENV ^5.5, PHPMailer ^6.8, PHP-QRCode ^5.0

Development Tools

Visual Studio Code Badge Windows Badge macOS Badge Git Badge Composer Badge npm Badge

  • IDE: Visual Studio Code ^1.85.1
  • Operating Systems: Windows 11 x64, macOS Sonoma 14.2.1 (M1 2020)
  • Frameworks: Composer ^2.6.6, npm ^10.3.0
  • Tools: Git ^2.43.0

Tech Stack

Live Environment

PHP Badge phpMyAdmin Badge Apache Badge MySQL Badge Linux Badge

Development Environment

macOS Badge MAMP Badge Apache Badge PHP Badge MySQL Badge phpMyAdmin Badge

  • Operating Systems: macOS Sonoma 14.2.1 (M1 2020)
  • Hypervisor: MAMP PRO ^6.8.1
  • Web Server: Apache ^2.4.54
  • Database: MySQL ^5.7.39
  • Database Management: phpMyAdmin ^5.2.0
  • Languages: PHP ^8.1.2

Features

  • User Accounts

    • Admins can create, edit, and delete user accounts
    • Users can log in and out
    • Users can reset their password
    • Users can update their profile information
    • Users can view their own data
    • Users can view other user's data if they have the correct permissions
    • Users can view and interact with student data if they have the correct permissions
    • Users can view and interact with school data if they have the correct permissions
    • Users can view and interact with event data if they have the correct permissions
    • Users can view and interact with reports data if they have the correct permissions
    • Users can view and interact with settings data if they have the correct permissions
  • Student Data

    • Students can register from the front-end portal, and their data is stored in the database (no login required)
    • Students submit their name, email, phone number, address, city, state, zip code, school, graduation year, degree, job type, subject matter interest, and program of study
    • Students can receive a confirmation email after registering
    • Admins can view, edit, and delete student data
    • Admins can contact students via email from the admin dashboard
  • School Data

    • Admins can add, edit, and delete schools
    • Schools have a name, address, city, state, zip code, and branding
    • Schools can be associated with students
    • Schools can be associated with events
  • Event Data

    • Admins can add, edit, and delete events
    • Events have a name, date, time, location(school), description, and branding
    • Events can be associated with schools
    • Events can be associated with students
    • Events can be associated with reports
  • Reports Data

    • Admins can view, edit, and delete reports
    • Reports store historical data even when relevant objects are deleted
    • Admins can generate new, updated copies of reports
  • Education Data

    • Admins can add, edit, and delete programs of study, and degrees
    • Programs of study have a name
    • Programs of study can be associated with students
    • Degrees have a name
    • Degrees can be associated with students
    • Students can select from a list of programs of study and degrees when registering
    • Students can submit their own programs of study when registering
  • Subject Matter Data

    • Admins can add, edit, and delete subject matter
    • Subject matter has a name
    • Subject matter can be associated with students
  • Settings Data

    • Admins can view, edit, and delete settings
  • Mail

    • Admins can send mail to students from the admin dashboard
    • Students receive a confirmation email after registering
    • Users can reset their password via email

Installation

To install this project, you will need to have an Apache web server with PHP and MySQL installed. You will also need to have Composer and npm installed on your development machine. You will also need to have an SMTP mail server set up to send mail from the application, however the rest of the application will function without this.

You will also need to have the following PHP extensions installed and enabled in your PHP configuration:

  • openssl
  • pdo_mysql
  • gd
  • mbstring
  • mysqli
  • imagick

Recommended Local Environments

  • Windows

    • MAMP or MAMP PRO for Windows or XAMPP - Apache, MySQL, PHP, phpMyAdmin comes pre-installed, and you can enable the necessary PHP extensions in the MAMP PRO or XAMPP control panel. You can also use the included phpMyAdmin to create the database for the application. You may need to adjust the default PHP version.
    • Git for Windows - GitLFS is also recommended for cloning the repository
    • Composer
    • npm
  • macOS

    • MAMP or MAMP PRO - Apache, MySQL, PHP, phpMyAdmin comes pre-installed, and you can enable the necessary PHP extensions in the MAMP PRO control panel. You can also use the included phpMyAdmin to create the database for the application. You may need to adjust the default PHP version.
    • Git for macOS - GitLFS is also recommended for cloning the repository
    • Composer
    • npm

There are two ways to get the project files. You can either clone the repository from GitHub, or you can download the files as a zip file from GitHub. If you clone the repository, you will need to have Git installed on your development machine, and GitLFS installed and enabled in your Git configuration. You'll want to run the following command to clone the repository:

git clone https://github.com/crimsonstrife/rym2.git rym2 && cd rym2

# If you have GitLFS installed and enabled
git lfs install
git lfs pull

If you download the files as a zip file, you will need to extract the files to a directory on your development machine, the LFS files should be included in the zip file.

Once you have the files, you will need to run the following commands to install the project dependencies, these should be run from the root directory of the project, where the composer.json and package.json files are located:

composer install
composer update

# Composer should install the PHPMailer and PHP-QRCode libraries, and update the composer.lock file. It should also run the npm install command for you as part of the scripts in the composer.json file, but you can run it manually if you need to.
npm install

You will also need to create a MySQL database for the application to use. You can use the provided database schema in the project, or you can create your own. The database schema is located in the temp directory of the project, and is named talentflow.sql. You can import this file into your MySQL database using phpMyAdmin, another editor, or the command line. If you're running the newer MySQL 8.0, you may need to instead use the talentflow8.sql file, which has the correct syntax for MySQL 8.0. You may also wait and leave the database empty, and the application will create the tables for you when you run the application for the first time, it should be able to determine which file to use on it's own.

You will also need to create a .env file in the root directory of the project, and add the environment variables listed below in the 'Environment Variables' section to the file. You can use the .env.example file included in the project as a template, and rename it to .env. You will need to add your own values for the environment variables, and you should keep the file secure, as it may contain sensitive information. The included .htaccess file should prevent direct access to the .env file, but you should still ensure you have proper file permissions set on the file in a production environment.

Open the url for the application, on first run the setup page should appear, and you should see if there are any notable errors with your configuration. If there are no errors, you can click the "Install" button to install the application. If there are errors, you will need to correct them before you can install the application. Once the tables are created, you should be able to log in with the default admin account, and you can then create new users, and change the default admin password.

You may also manually create the tables in the database using the provided schema, and then simply create an empty php file in the root directory of the project named ready.php, and the application should be able to determine that the tables are already created and skip the setup page.

Environment Variables

To run this project, you will need to add the following environment variables to your .env file, or edit the .env.example file included and rename it to ".env".

APP_NAME - The name of the application

APP_ENV - The environment the application is running in (local, development, production, etc.)

APP_DEBUG - Whether or not the application is in debug mode

APP_URL - The URL of the application

COMPANY_NAME - The name of the company

COMPANY_ADDRESS - The contact address of the company

COMPANY_CITY - The contact city of the company

COMPANY_STATE - The contact state of the company

COMPANY_ZIP - The contact zip code of the company

COMPANY_PHONE - The contact phone number of the company

COMPANY_URL - The website URL of the company

CONTACT_EMAIL - The contact email address for the application administrator

LOG_LEVEL - The level of logging for the application (debug, info, notice, warning, error, critical, alert, emergency) //TODO: Currently not implemented

DB_CONNECTION - The type of database connection (mysql), currently only mysql is supported

DB_HOST - The host of the database

DB_PORT - The port of the database

DB_DATABASE - The name of the database

DB_USERNAME - The username for the database

DB_PASSWORD - The password for the database

To use the mail functions of the project, you will also need the following environment variables in the .env file.

MAIL_MAILER - The mailer to use (smtp, sendmail, mail, etc.), currently only smtp is supported

MAIL_HOST - The host of the mail server

MAIL_PORT - The port of the mail server

MAIL_AUTH_REQ - Whether or not the mail server requires authentication (true, false)

MAIL_USERNAME - The username for the mail server

MAIL_PASSWORD - The password for the mail server

MAIL_ENCRYPTION - The encryption type for the mail server (tls, ssl), must have openssl installed and enabled in PHP

MAIL_FROM_ADDRESS - The email address to send mail from, must be a valid email address for the mail server, and if authentication is required then the username must be able to send mail from this address

MAIL_FROM_NAME - The name to send mail as

You will also need to add the following environment variables for the encryption of the mail password, or if you leave them blank, the app should generate them for you. These can be random strings of any length, but should be kept secret.

MAILER_PASSWORD_ENCRYPTION_KEY

MAILER_PASSWORD_ENCRYPTION_IV

Usage

Refer to the Installation section for information on how to install the project.

Once the project is installed, you can use the application by opening the URL for the application in a web browser. You will be presented with the landing/student registration page, and you can register as a student, or find the Admin Login link in the footer, and log in as an admin. You can then use the admin dashboard to view, edit, or delete student data, and add, edit, or delete other data in the application.

You can also use the admin dashboard to send mail to students, and generate reports. You can also view and edit settings for the application, and view the activity log for the application.

Example

Support

For school-related support, email pbarnh1@wgu.edu or my personal email for professional correspondence.

Acknowledgements

Expand for List

References

Appendix

Any additional information goes here

License

Distributed under the MIT License. See LICENSE for more information.