kir-dev / tanulo-next Goto Github PK
View Code? Open in Web Editor NEW:books: Közös tanuláshoz partnerkeresést segítő alkalmazás
Home Page: https://tanulo.sch.bme.hu
License: MIT License
:books: Közös tanuláshoz partnerkeresést segítő alkalmazás
Home Page: https://tanulo.sch.bme.hu
License: MIT License
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.
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.
We need a nice favicon (and maybe a brand icon too) to use on our shiny website.
On large screens, the "n. emelet" text's font size could be larger. Be careful with small screens, as it could break the layout.
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.
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.
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).
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.
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).
Create a nicer layout to show a group's details (maybe with some icons).
Use CSS variables to toggle between light and dark mode. Note: integration with Bulma could be a bit tricky.
With the release of 0.9.0, Bulma finally supports spacing helpers for margin and padding. After merging #308 we can use this feature in our codebase.
To avoid any possible breaking changes between releases, it's safer to use specific versions instead of latest
.
On large screens, the new ticket and new group buttons should be in one line. We can use flexbox for that. Note that on small screens they should be below each other.
Also validate their presence (and room value) on the backend.
Right now we allow the sessions to last indefinitely. It should be maximalized in ~5 hours (checked on the backend).
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.
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.
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(?))
Make the cards half width with wrapping on small screens. It can be considered to refactor the card's layout aswell.
This will improve the build time.
Right now, fullcalendar's layout breaks on mobile screens. We can consider replacing it with a different calendar component, or fix the layout.
TypeORM migrations are behaving weirdly when using generated column. So it's time to replace the whole thing.
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.
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.
In groups menu, user should be able to search groups containing the tag from a newly implemented search bar. (copy search bar from here: https://bulma.io/documentation/components/panel/) See issue #230 before this one.
Migth be useful for finding study mates.
It turns out express 4 already has built-in features, so we can get rid of the bodyParser dependecy.
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.
Maximize the character counts in these fields. Validate on frontend and backend (database level). Subtask of #135
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.
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.
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.
Restrict startDate to be at least the current time of creating the group
The app could send an email to KBPR whenever a new Ticket is created.
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.
Look for a package / soution that
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).
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
migrations/20200408124626_add_non_nullable.ts line 25: 'tikcets'
should be 'tickets'
components/groups/group.middlewares.ts line 23: .where('id', (req.user as User).id)
should be .where('user_id', (req.user as User).id)
Preferred is markdown without embedded HTML.
Use webpack for asset compilation and bundling. With this we can also use yarn for front-end dependencies (instead of CDN).
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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.