Git Product home page Git Product logo

tanulo-next's People

Contributors

balintkiraly avatar bbucsy avatar berenteb avatar dannyss123 avatar dependabot-preview[bot] avatar dependabot[bot] avatar gergoradeczki avatar martongallyas avatar nemaberci avatar nmate980829 avatar omtheturtle avatar renovate-bot avatar renovate[bot] avatar tomitheninja avatar triszt4n avatar tschonti avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

tanulo-next's Issues

Private groups

I came across with the idea to allow anonymous joining to a group. In this case it would show Anonymous on the group's page, and the group wouldn't show up on the user's profile. We can consider it to be visible to page admins / group owners.

Add maximum number of attendees to group

We can add another optional field to group, that can limit the number of people able to join to a group. If not set, it should allow infinite number of people.

Favicon

We need a nice favicon (and maybe a brand icon too) to use on our shiny website.

Use larger font on rooms page

On large screens, the "n. emelet" text's font size could be larger. Be careful with small screens, as it could break the layout.

Change attribute subject to tags

Idea:

When creating a group, instead of defining the subject, the user should be able to add tags in form. See https://wikiki.github.io/form/tagsinput/ for the UI, and change db accordingly.

Reason:

There might be more than one subject of the event, and using tags is more efficient for the eyes to look through the groups. What's more, they should be easier to filter by.

Customizable room order on rooms page

For students living on higher floors, the relevant ones are currently at the bottom of the page. We can add an option to the user in the database whether they want to see the rooms in ascending or descending order (could be set on the user's profile page).

Better server-side error handling

Right now when someone requests a path like /users/hello, the objection query builder throws an error by rejecting the query promise: [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

We should catch these rejections and handle them correctly, otherwise a simple bad URL param can terminate the app.

Use express-style middlewares

The current MVC-style code although works, has it's limitations. E.g. multiple db-queries in group middleware and controller (and with that, multiple null-checks), a controller has multiple responsibilities (get the data through the service, check, render).

Edit group page

Implement a new page to let the user change the attributes of the group they created (watch out for authorization). The user shouldn't be able to change the dates for now. (Solve issue #111 and #130 first).

Dark mode

Use CSS variables to toggle between light and dark mode. Note: integration with Bulma could be a bit tricky.

Fix tags on mobile

When on a group's page, on mobile the tags are not separated vertically.

2020-06-23-161442_398x221_scrot

Maximize booking times

Right now we allow the sessions to last indefinitely. It should be maximalized in ~5 hours (checked on the backend).

Pagination on groups page

When people start to use it (hopefully) we'll have a lot of groups in one page. With (server-side) pagination, the UX could improve a lot.

Kick member from group

Idea:

  • Group owner can kick members from his group with a button next to name in member list. (don't forget confirmation modal)
  • Hard part: When kicking, owner has to leave a message, why member was kicked -> reason will be sent via email (email needs to be fetched via authsch). Preferred method of giving message on frontend: modal.

Make the dates on groups' page more verbose

Problem:

People have a hard time remembering even today's date. Now the footer shows a full date-time of the start and end of event.

Solution:

We need something like "starting: in 5 minutes" and "duration: 45 minutes" in the footer. The group show page can stay as it is. Try implementing some functions. (A package would be too much(?))

Refactor group list layout

Make the cards half width with wrapping on small screens. It can be considered to refactor the card's layout aswell.

Better calendar layout on mobile

Right now, fullcalendar's layout breaks on mobile screens. We can consider replacing it with a different calendar component, or fix the layout.

Help the user choose a non-conflicting start and end date

When someone visits the create group page not from the calendar page, they might not be aware of the selected floor's availability. To help them, and to avoid the need to open the calendar page separately, we can either validate the selected time intervals live (whenever it changes, show a warning that it conflicts), or maybe we can have a button that shows the currently selected room's calendar in a popup.

Soft delete old groups

Thinking for the long run, if people start using the site and been using it for a while, old groups will lose any significance (thinking about it, even after a semester / year). To prevent loading unnecessary amount of data later, we can implement a method to soft delete (or even hard delete) older groups from the database periodically, if they're old enough.

Room number in profile

User can set their room number on profile, and thus their floor's study room will be featured on the top of the home page.

Validate group fields

Maximize the character counts in these fields. Validate on frontend and backend (database level). Subtask of #135

Modify migration - description length

Create a new migration file, in which the tickets' and groups' description attribute's length is more than the default varchar length, let it be 500.

Replace flatpickr in new group

Problem:

Right now flatpickr behaves not so well on mobiles: Android browsers Chrome and Firefox didn't use flatpickr, rather the OS native datetime picker. This makes it possible to create event in the past, and uses ISO date string in the form.

Solution:

  1. Force from native to use flatpickr: https://flatpickr.js.org/mobile-support/ (They don't recommend it.)
  2. Have a look at bulma calendar, demo here: https://creativebulma.net/product/calendar/demo (They made it responsive)

Copy group feature

Copy an already created group with a new start and end date (or just "rebook" the same group), possibly with the ability to change the room.

Download group event as ics on group show

Make a button, that exports an .ics file, that can be imported into a calendar app. Packages like ics, file-saver and blob might be useful, but strive for light-weight implementation.

Refactor ticket card layout

Don't just have everything in a vertical stack. Also, make the cards half the size of the container (with wrapping to one column on small screens).

Calendar shows events with wrong time

I suppose the calendar shows the events in wrong time zone. E.g. an event from 18:30 to 20:00, in the calendar it looks like it is from 20:30 to 22:00

Fix little bugs

Typo:

migrations/20200408124626_add_non_nullable.ts line 25: 'tikcets' should be 'tickets'

Semantic error:

components/groups/group.middlewares.ts line 23: .where('id', (req.user as User).id) should be .where('user_id', (req.user as User).id)

Integrate webpack

Use webpack for asset compilation and bundling. With this we can also use yarn for front-end dependencies (instead of CDN).

Better form validation

We should indicate the user if some form input is wrong (e.g. group start date is later than the beginning) without reloading the page (keeping the values in the form). Validate in the frontend and the backend too.

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.