Code Monkey home page Code Monkey logo

keating's Introduction

Keating

Local development

cp .env.example .env
make init
make shell
  # inside container
  npm run dev

Application will be running under localhost:53851 and http://keating.blumilk.localhost/ in Blumilk traefik environment. If you don't have a Blumilk traefik environment set up, follow the instructions in this repository.

Commands

Before run every command from below list, you must run shell:

make shell

Command list

Composer:

composer <command>

Run backend tests:

composer test

Lints backend files:

composer cs

Lints and fixes backend files:

composer csf

Artisan commands:

php artisan <command>

Compiles and hot-reloads frontend for development:

npm run dev

Compiles and minifies for production:

npm run build

Lints frontend files:

npm run lint

Lints and fixes frontend files:

npm run lintf

Containers

service container name default host port
app keating-app-dev 53851
database keating-db-dev 53853
redis keating-redis-dev 53852

keating's People

Contributors

blumilk-renovate[bot] avatar blusia avatar dependabot[bot] avatar ewelinaskrzypacz avatar kamilpiech97 avatar karolzygadlo avatar krzysztofrewak avatar

Watchers

 avatar  avatar  avatar  avatar

keating's Issues

Refactor CRUD actions to links

Right now all CRUD actions are buttons, so they are unclickable with right-click if anyone would like to open it in new card.

obraz

It would be nice to refactor links to links (link = something that opens new page) and leave buttons as buttons (button = something that opens some modal and stuff).

Tooltips

It would be nice to add tooltips to all "icon-only" buttons, like here:

image

Integrate news with Google Classroom

It would be perfect to have an option "publish this news on Google Classroom". Somehow we would need to point to which channels it should be published.

This is related to #15 and should be done after implementation of this task.

Setup Laravel project

In this initial task I expect to have:

  • dockerized development environment
  • fresh and cleaned Laravel installation ready-to-run
  • our common Github Actions added
  • initial readme file

FAQ management

FAQ should be manageable from the dashboard. Every entry should have a proper question and answer, like here:

obraz

Studies modes management

We need:

  • studies modes database structure (with internal id and name) (eg. "studia stacjonarne")
  • CRUD actions

UX improvements

As this is the first time I have launched this project, I see some small things that could be improved.

  • Page titles - title of the page is the link of the page I am currently on - I'd like to have real title, like "Studenci" or something like that.
  • Tooltips - I didn't know that this check icon is for making the semester active/inactive. Adding some tooltip would be really helpful.

image

  • Delete icon - I think that trash icon will be better.
  • Add some sorting/filters on index views.
  • Add missing translation in validation attribute (password)
  • Confirmation dialog - instead of traditional confirmation dialog like we have now

image

it will be cool to have "undo" feature like Google Gmail provides

image

  • Adding course to semester - if no coursse/semester exists, select looks like this:

image

Additional general settings

Things below should be configurable from the dashboard:

  • university logo
  • primary and secondary color for theming

Design 404 page

404 page should be designed in funny way and implemented in the project.

Current 404 page:

image

Courses page

Courses should be visible for guests:

  • on /kursy page with nice table
  • on /kursy/{id} pages with course details

Table should include course code, full name, assigned field, semester number, form. Active courses should go first.

image

This is related to #10 and should be done after implementation of this task.

Real data demo seeder

I'd like to have seeded real (or almost real) data in the database:

  • students
  • courses
  • semesters
  • fields
  • semester courses

Contact management

Contact info should be manageable from the dashboard. That includes:

  • university email
  • optional github handle
  • optional alternative channel (like slack URL or linkedin profile)

Courses management

We need:

  • courses database structure (with internal id, abbreviation, full name, WYSIWYG description, semester number (not semester relation!) to chose and relations to field and form)
  • CRUD actions

Current solution:

obraz

In current solution course has a field "is active" but I would move it to separate entity.

Grades management

This could be implemented as separate view or as a part of #11. I would like to have a grid with:

  • list of all students in group in rows (sorting would be cool!)
  • list of columns defined for every group (maybe columns should have types like "nullable boolean", "classic grade", "text", "final grade"?)

Current solution:

obraz

Grades page

Grades page should:

  • be available under \oceny page
  • provide a form where student should choose semester of interest, course from courses attached to the selected semester, group from groups attached to the selected course and his index number
  • for existing student a matrix with all grades should be shown
  • all other students names should be truncated and unidentifiable (GDPR) and maybe randomized
  • selected items in the form should be added to URL
  • nice to have: next to the index number input there could be "Remember me (in cache)" checkbox

This is related to #11 and #12 and should be done after implementation of these tasks.

FAQ page

FAQ items should be visible for guests on /faq page.

This is related to #14 and should be done after implementation of this task.

Courses in semester management

This will be more complex than typical CRUD.

We need:

  • a connection between semesters and courses, eg. course "Projektowanie i programowanie obiektowe I - L" is conducted in "semestr zimowy 2023/24"
  • every course in semester should have multiple groups, eg. "s2INF1(1)"
  • every group should have multiple students assigned

Current solution is a little different, because there's different view for all groups, but I find it little unhandy:

obraz

obraz

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Pending Approval

These branches will be created by Renovate only once you click their checkbox below.

  • - Update dependency @typescript-eslint/eslint-plugin to v7
  • - Update dependency @typescript-eslint/eslint-plugin to v8
  • - Update dependency @vitejs/plugin-vue to v5
  • - Update dependency eslint to v9
  • - Update dependency laravel-vite-plugin to v1
  • - Update dependency primevue to v4
  • - Update dependency ubuntu to v22
  • - Update dependency vite to v5
  • - Update docker/build-push-action action to v6
  • - Update postgres Docker tag to v16
  • ๐Ÿ” Create all pending approval PRs at once ๐Ÿ”

Awaiting Schedule

These updates are awaiting their schedule. Click on a checkbox to get an update now.

  • - Update all non-major dependencies with digest and pinDigest (@formkit/auto-animate, @headlessui/vue, @heroicons/vue, @inertiajs/inertia, @tailwindcss/forms, @tailwindcss/typography, @typescript-eslint/eslint-plugin, @vitejs/plugin-vue, actions/cache, actions/checkout, actions/setup-node, appleboy/scp-action, appleboy/ssh-action, autoprefixer, blumilksoftware/action-pr-title, blumilksoftware/codestyle, composer, composer/composer, docker/build-push-action, docker/login-action, docker/metadata-action, docker/setup-buildx-action, dompurify, eslint, eslint-config-prettier, eslint-plugin-tailwindcss, eslint-plugin-vue, fakerphp/faker, guzzlehttp/guzzle, laravel-vite-plugin, laravel/framework, laravel/sanctum, mockery/mockery, node, nunomaduro/collision, php, phpunit/phpunit, postcss, postgres, primevue, quill, redis, shivammathur/setup-php, spatie/laravel-options, stevebauman/purify, tailwindcss, vite, vue)

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Vulnerabilities

Renovate has not found any CVEs on osv.dev.

Detected dependencies

composer
composer.json
  • php ^8.2
  • fakerphp/faker ^1.23
  • guzzlehttp/guzzle ^7.8
  • inertiajs/inertia-laravel ^1.3
  • laravel/framework ^11.14
  • laravel/sanctum ^4.0
  • laravel/tinker ^2.9
  • spatie/laravel-options ^1.1
  • stevebauman/purify ^6.0
  • blumilksoftware/codestyle ^3.2
  • mockery/mockery ^1.6
  • nunomaduro/collision ^8.1
  • phpunit/phpunit ^11.2
  • spatie/laravel-ignition ^2.8
docker-compose
docker-compose.yaml
  • postgres 15.2-alpine3.17
  • redis 7.0.11-alpine3.17
environment/prod/deployment/beta/docker-compose.beta.yml
  • postgres 15.2-alpine3.17
  • redis 7.0.11-alpine3.17
dockerfile
environment/dev/app/Dockerfile
  • composer/composer 2.7.2-bin
  • node 21.7.3-bullseye-slim
  • php 8.3.6-fpm-bullseye
environment/prod/app/Dockerfile
  • composer 2.7.2
  • node 21.7.3-bullseye-slim
  • php 8.3.6-fpm-bullseye
github-actions
.github/workflows/check-pr-title.yml
  • blumilksoftware/action-pr-title v1.2.0
  • ubuntu 20.04
.github/workflows/deploy-to-beta-by-push.yml
  • actions/checkout v4.1.1
  • docker/setup-buildx-action v3.3.0
  • docker/login-action v3.1.0
  • docker/metadata-action v5.5.1
  • docker/build-push-action v5.3.0
  • appleboy/scp-action v0.1.7
  • appleboy/ssh-action v1.0.3
  • ubuntu 22.04
.github/workflows/test-and-lint-js.yml
  • actions/checkout v4.1.1
  • actions/cache v4.0.2
  • actions/setup-node v4.0.2
  • ubuntu 22.04
.github/workflows/test-and-lint-php.yml
  • actions/checkout v4.1.1
  • actions/cache v4.0.2
  • shivammathur/setup-php 2.30.2
  • postgres 15.2-alpine3.17
  • ubuntu 22.04
npm
package.json
  • @formkit/auto-animate ^0.8.0
  • @headlessui/vue ^1.7.16
  • @heroicons/vue ^2.0.18
  • @inertiajs/inertia ^0.11.0
  • @inertiajs/inertia-vue3 ^0.6.0
  • @tailwindcss/forms ^0.5.6
  • @tailwindcss/typography ^0.5.10
  • axios ^1.6.0
  • dompurify ^3.0.6
  • laravel-vite-plugin ^0.8.0
  • lodash ^4.17.21
  • primevue ^3.35.0
  • quill ^2.0.0
  • tailwindcss ^3.3.3
  • vue ^3.3.4
  • vue-toastification ^2.0.0-rc.5
  • @typescript-eslint/eslint-plugin ^6.7.0
  • @vitejs/plugin-vue ^4.3.4
  • autoprefixer ^10.4.15
  • eslint ^8.49.0
  • eslint-config-prettier ^9.0.0
  • eslint-plugin-tailwindcss ^3.13.0
  • eslint-plugin-vue ^9.17.0
  • postcss ^8.4.29
  • vite ^4.4.9

  • Check this box to trigger a request for Renovate to run again on this repository

Passwordless login

We would like to have additional way of login to the management system.
It should allow us to :

  • login with email without password.
  • it should send as link to authorize the login session, we wanna have the ability to authorize the session from other device than the one we trying to log in from. For example : i try to login from university PC and i wanna authorize the login session from my smartphone
  • login session should be set for limited time like in bank applications.

News management

News should be manageable from CRUD panel like in current solution:

obraz

Fields management

We need:

  • fields database structure (with internal id, abbreviation and name)
  • CRUD actions

Current solution:

obraz

Main page

Main page should contain:

  • configured in dashboard data like name, surname, university name, etc.
  • biograms
  • maybe some nice counters?
  • maybe some shortcuts to contact page?

Right now data are hardcoded, but of course they should came from the database or maybe some cache engine.

Users and authentication

In general system should have only one user for now: administrator. We should provide:

  • a way to log in
  • a way to log out
  • a way to change password
  • a structure to protect dashboard (designed in #3) from other users than administrator

Right now it look like this:

obraz

Dashboard navigation behaviour

Dashboard navigation should be dynamic.


Maybe it's not the of of this pull request, but it is so little thing that we can fix. I mean, when I click "Studenci", in the menu "Dashboard" is highlighted, not "Studenci"

image

Originally posted by @EwelinaSkrzypacz in #45 (review)

Students management

We need:

  • students database structure (at least internal id, index number, name, surname)
  • searchable (by names and numbers) list of all students
  • form to add new student
  • form to edit existing student
  • a way to delete student

Current solution:

obraz

obraz

Configurable sections

Things like below should be ready to enable and disable per application instance:

  • biograms on main page
  • news section
  • FAQ section
  • contact section?

Contact page

Contact page should be visible for guests on /kontakt page and it should contain:

  • huge and linked email to the teacher
  • linked github icon with handle
  • all additional forms of contact defined in the dashboard (Linkedin profile, slack channels and so on)

This is related to #13 and should be done after implementation of this task.

Course forms management

We need:

  • discuss if we need it in code as enum or in database? if in database, then:
  • course forms database structure (with internal id, one-letter-abbreviation and name) (eg. "L" -> "laboratorium")
  • CRUD actions

obraz

Main page management

Main page (as described in #23) should:

  • be configurable by sections (administrator should have option to disable any section)
  • sections should be: landing, about me, counters, contact; maybe something else?
  • should have fillable "about me" columns
  • should have fillable counters

News page

News should be visible for guests:

  • on /aktualnosci page with pagination/filtering by year maybe
  • on /aktualnosci/{id} pages with news details and buttons to share

This is related to #15 and should be done after implementation of this task.

Test environment

It would be nice to have a test environment somewhere. I would like to deploy on main merge.

Semesters management

We need:

  • semesters database structure (with internal id, name and status)
  • CRUD actions
  • only one semester should have active status

obraz

General settings management

Things below should be configurable from the dashboard:

  • teacher name and surname (#65)
  • teacher email (#65)
  • teacher titles (#65)
  • university name (#65)
  • department name (#65)
  • university logo?
  • maybe some primary color for theming?

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.