Official Discord server - https://discord.gg/ZEkX2NPWVs
The idea behind Study Portal is to have one platform where students are able to work together on work where other people are doing similar subjects and help each other out.
The full public roadmap is available to everyone. The link to it can be found here. Study Portal Public Roadmap
Development for this project can sometimes fall behind in regard to keeping up with the roadmap since essentially all the development is done by me and I have a full time job. I will try my best to keep up with the roadmap and keep it up to date. Occasionally people help but nothing significant.
Q/Year | Status |
---|---|
Q1 2022 | ✔️ Completed |
Q2 2022 | ✔ Completed |
Q3 2022 | ✔ Completed |
Q4 2022 | ✔️ In Progress |
Q1 2023 | ❔ Planning |
Q2 2023 | ❔ Planning |
Q3 2023 | ❔ Planning |
Q4 2023 | ❔ Planning |
Before we get into the nifty-gritty of the project and my plans for the future, I first wanted to give a little back-story to how the idea came about and the situation that I was in at the time that I had come up with the idea. I am going to assume that you know nothing about me, so I will make sure to leave some pointers. During my time at college, I had to do a work placement and I had actually decided to take part of a work placement where we are all told that it was going to be really difficult, well long story short, it started with 12 people and finished with 2, including myself. During that project, I got exposed to Laravel which is an entire different story and quite a steep learning curve since I had never worked with any frameworks before. You can read about my experience with laravel up to yet here.
Anyway, if we fast-forward 12 months, I am finishing my work placement with over 700 hours of industry experience in the bag. At the time of writing this I can't remember what triggered it, but I had this idea to create a platform that allowed students to work together in one way or another. Teams is cool, but I feel like it's tailored more towards a business environment compared to a student environment which is one of the problems I was aiming to solve by developing this application.
But, long explanation, cut short, my primary goals were as follows;
- Create a platform that students could work together in some way to get work done more efficiently.
- Enable collaboration across all levels of study, ranging from college to university.
- Implement additional tools that other applications don't have to ensure that it tailors for students.
- Have something that is open source, so it can be developed over a long time.
Tick means it has been finished
- Timetable - Place for students to create their own timetable and keep track of what lessons they have.
- Assignments - This is where students can keep track of assignment work that they are doing.
- Dashboard - Overview of all the stats that matter to students.
- Community - Place where students can talk to each other with posts and support each other.
- Kanban - Students being able to have their own personalised kanban to track progress of work or other stuff.
- Calendar - One place where meetings and events can be created and tracked.
If you want to see what is happening in more detail than follow this link: https://github.com/users/WillTheDeveloper/projects/5
More features will be added to this list soon. Progress has outpaced the documentation and roadmap a little.
- We recommend using docker for hosting a local database.
- Have PHP 8 or later installed and setup.
- A database of some kind to develop on.
- Your favourite IDE
- Download Docker
- Setup WSL2 kernel update
- Setup your IDE
- Download PHP and place it inside the root of your
C:
drive extracted. - Enable the following PHP extensions inside the
php.ini
file (Further instructions can be found in the file itself):- bz2
- curl
- ftp
- fileinfo
- mbstring
- mysqli
- openssl
- pdo_mysql
- pdo_pgsql
- pdo_sqlite
- pgsql
- shmop
- Install composer using the Windows installer found at the top of the page.
- Download the
.msi
installer for windows, using the LTS version of Node. - Decide what you want to call your project. We will refer to it now as
$project
. - Initialise a project by running
composer create-project laravel/laravel $project
in powershell. - Enter the directory of your new project via powershell by running
cd ./$project
- Install composer packages by running
composer install
- Install NPM packages by running
npm install
- Setup environment file by running
cp .env.example .env
- Generate your application key:
php artisan key:generate
- Open docker desktop and wait till it has initialised.
- Run this command in command line:
docker pull postgres
then rundocker pull dpage/pgadmin4
- Inside docker, navigate to
images
tab on the left and find postgres in the list. - Hover your mouse over
postgres
and press therun
button located to the right of it. - In the menu, dropdown the section which says
optional settings
and enter the following information:container name
- Give the container a name, this can just bepostgres
ports
- Give the container a port which you will use to access the container, this can just be5432
which is the default.- In the environment variables section create the following:
POSTGRES_PASSWORD
- Set this as the variable then in the value, create a no-space password which you will use to access the database.
- Press
run
to start the postgres server. - If you are connecting your application to a database, add the URL and credentials to
.env
:DB_HOST
- Using docker, this would just belocalhost
.DB_CONNECTION
- In this example, we use postgres sopgsql
would go here.DB_PORT
- This would be whatever you set as the port on docker when you created the container.DB_DATABASE
- Name of the database that we will be creating.DB_USERNAME
- For this example, this is simplypostgres
.DB_PASSWORD
- Whatever you set the docker container environment variable to.
- Run
php artisan migrate
to set up the database with any migrations that you might have. - Compile assets by
npm run dev
- Start the server:
php artisan serve
- Visit your server on http://localhost:8000
You may get an error about a missing .env file which I do not source control since it has credentials in it.
This repository follows semantic versioning: MAJOR . MINOR . PATCH.
The versioning has been introduced into the repository a bit late but has now been implemented and will be used from now on.
- Alpha (Not part of versioning)
- Beta (Currently in Beta)
- Public Beta Testing
- Initial release (Date TBD)
Testing should be completed and successful before accepting any pull requests into the repository.
Tests can be run via the command line using the following command in the root directory of the project:
php artisan test
Tests can be located inside /tests/feature/
directory.
Study Portal will have a lot of cross application notification integration that initially will be heavily based around JSON webhooks.
Below are a list of methods that you will be able to receive notifications:
- Microsoft Teams - This has been requested upon some feedback that I received and made it clear that it would be quite a good idea and an alternative way to get into contact with students regarding any new assignments that they may have.
- Email - This would be one of the main ways of notifying students of updates on the platform that would be targeted towards them.
- Text message - I aim for this to be one of the other notifying channels that most of the students would use since I am assuming that most students would have phones that they can check when they get a notification.
- Discord - This is the main notification channel for testing initially but could be used on a wider scope on a per-person basis but would require webhook relationships with users which is not a thing yet. Further investigation is required for this.
- Twitter - This might not make it to the final release since I cannot see it being used.
Suggestions are welcome for other notification channels but would need some sort of justification.
I am still yet to create the templates for issues
If you come across any issues on the website that is causing you problems, please take a moment to either email me if you do not have a GitHub account and choose not to create one or feel free to create an issue on this repository which will be reviewed and looked into resolving. You may be asked for further details on it or how to recreate the issue so please make sure to check your GitHub notifications a few days after you submit the issue. You can email me at: [email protected].
You can do this in the issues tab. If you are not sure of where this is then here is a link - https://github.com/WillTheDeveloper/StudyPortal/issues
- If you have the skills to build it yourself then you should create a pull request with it. If you need some information or anything that is database related then contact me directly.
- If you would just like to suggest something then, create a discussions page, and we can look into implementing it.
You can contribute to this repository by forking it, making the changes that you want and then placing a pull request with all the details of what you have changed/added/deleted. Any questions, please visit my profile and email me.
PLEASE NOTE THAT THIS IS NOT THE FINAL DESIGN AND IS SUBJECT FOR A OVERHAUL REDESIGN AND IS JUST SHOWING A CONCEPT
Here are some images of the fundamental structure of the application at the minute.
UPDATE - THIS PAGE IS CURRENTLY HAVING AN HEAVY REDESIGN
You can preview this redesign on a different branch linked here - https://github.com/WillTheDeveloper/StudyPortal/tree/redesigned-backend
On this page, students will be able to get an overview of what is happening. Here they will be able to view an overview of key flags for that individual, which will include things such as the students attendance etc. Additionally, other information will be available here such as updates or notifications that the student may receive regarding anything that they may need updating on, such as assignment updates etc.
This is where students will be able to view their timetables and edit them if they need to. They will also be able to create their own if they have not been assigned one. This image is due for an update as this has changed a lot. Here they will be able to manage and view their timetable for the week. They will be able to click on the slot that they want to query and view extra information about it. I am also going to link the timetable to assignments so when they view it or look at the details, assignment pointers can be found there too as a subtle reminder.
This is where students will be able to view all the assignments they have. Which will be followed by an image of where students can view their assignment details. Here they are able to view details of assignments that tutors or staff have assigned to them. They will be able to hand in work and tutors will be able to see this on their own dashboard interface.
This is where students will be able to create their own kanban boards to allow them to organise tasks and work into groups for themselves. The idea behind this is to support them by giving them a tool where they can possibly time manage their tasks and other things they are doing by adding their own tasks and syncing it with assignments. Additional information will be able to be viewed when clicking on the task that you create. These tasks can be associated with other things such as subjects and assignments if they felt it was necessary. In the future, these will be sharable with other people with set permissions on each.
Details view of the kanban board. Still in early development.
This is where students will be able to collaborate on work and ask each other things related to their own subjects.
In regard to tutor, the views will be similar with additional functionality. There are security measures in place to ensure that there is no access from a student to tutors tools.
On this page, tutors can create groups of students which could be different classes or such. Groups are groups of students that can be chosen to assign assignments to be tutors, this will be shown further down.
This is where tutors can view who is in the group and edit anything they need to edit regarding the group.
Here is where tutors can select different students to add to the group.
Tutors will have additional options to assign work to students, this is where they will do it. Which can be located inside the assignments tab in the navigation bar.
Finally, tutors can see who has seen the assignment and when they have submitted the students work along with editing the assignment information.