GithubHelp home page GithubHelp logo

ratsch0k / group-car Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 0.0 4.67 MB

Website for managing usage and parking location of cars used in groups in Families

HTML 1.02% CSS 0.04% TypeScript 98.75% Shell 0.08% JavaScript 0.12%

group-car's People

Contributors

dependabot[bot] avatar ratsch0k avatar

Stargazers

 avatar  avatar

group-car's Issues

View invited members

Description As a member of a group, I want to see, who is invited to this group.
Acceptance criterion The list of members also lists all invited members. To differentiate between invited and actual members the invited users should be displayed differently.

Leave group

Description As a user, I want to leave a group
Acceptance criterion For any member, who is not the owner, the group management dialog shows a button with which a user can leave a group

Store and load selected group to/ from local storage

Description As a user, I don't want to select a group every time I load the website. And instead want, that the website remembers the car which I selected last.
Acceptance criterion If a group is selected the selection is stored in the local storage. And if the website loads and finds the stored selection it will automatically select that group.

User popup

If the user clicks on his/her profile picture in the header a small popup is shown with a bigger version of the profile picture, the username and email address and a logout and settings button. The logout button should log the user out (functionality should be provided in this issue) and the settings button should navigate the user to a settings page where the user can configure his/her account (implement in other issue)

Transfer ownership

Description As the owner of a group, I want to be able to transfer my ownership to another member of the group
Acceptance criterion In the members list the owner can transfer his/her ownership

Manage group dialog popup

Description As a user, I want to open the group management dialog and view information about the group
Acceptance criterion A new button in the group menu exists with which the user can open the dialog for group management of the currently selected group. This dialog contains all information about the group. name, description, creation date, last update time

Account page

Description As a user, I want to be able to change account settings through an account page.
Acceptance criterion A new button called Settings is added to the menu, opened when clicking on the user's avatar. Clicking that button will open a new page as a dialog in which the user will be able to change account specific settings.

Change password

Description As a user, I want to change my password.
Acceptance criterion On the account management page, the user can click the button "Change Password". This opens a dialog in which the user can enter their previous password and enter a new password. When the user clicks a button "Change" their password is changed to the new one. Clicking "Cancel" will cancel that process.

Map view

The main page of the website should contain a map which the user can view.
Map library Leaflet with the react wrapper React-Leaflet

View invites

Description As a user, I want to see all invites
Acceptance criterion The user popup has a new button which opens a list of all invites

Refactoring of pipeline

The pipeline is not up to date with the pipeline used for the backend. Refactor it to use specific tags instead of triggering on pushes to specific branches.

Add demo mode

Description As a user, I want to test the website ant its functionalities without creating a user account.
Acceptance criterion A demo mode is added that adds the ability to try out the website completely on the client without any communication with the server.

Detailed description

Changes are only made on the client and stored in session storage. Authentication is partially skipped, meaning, the user is forced to log in as a specific user and cannot create an account but nothing is really authenticated.
The demo mode should only be accessible if the website is specifically built with it. Then, the built website is forced to be in demo mode. It should not be available on the default websites. This can be realized by removing code responsible for the demo mode during during the build process.
On every release that version should additionally built with demo mode active and should be pushed to a domain designated for it (demo.mygroupcar.de).
Add a disclaimer on the first visit to explain to the user that this is only a demo version of the website and that while they can use every functionality, nothing is permanently stored.

Implementation details

We will use the process.env.DEMO_MODE to switch the demo mode on. If process.env.DEMO_MODE is true, the website is built with the dem mode enabled. Without it, any code responsible for the demo mode is removed.

The demo mode should be implemented in such a way that no or almost no changes to the default mode must be made.
This is achieved by overriding calls that would normally sends requests to the server.

An alternate version of the main app component App.tsx exists that builds the website in a slightly modified way loading the code to override requests and changing the authentication route to use an alternative version that forces a certain user. Additionally, the initial demo mode explanation page is added and shown before any other route.

Park car

Description As a member of a group who is currently the driver of a car, I want to park that car at a specific location.
Acceptance criterion To the car in the drawer which the user is currently driving a new button is added with which the user can park a car. To park the car the user can either select to park it at the current location or select to click on the map to set the location.

Make changes to design

Description Update and change the design to a more modern look. Make slight changes to the color, add a logo, and make overall design more consistent and more rounded.
Acceptance criterion The defined changes are made.

Delete group

Description As the owner of a group, I want to be able to delete that group
Acceptance criterion A new button is added to the group management dialog with which the owner can delete a group

Real time car updated

Description As a member of a group, I want to get real-time information when a car is added, parked or a member starts to drive it.
Acceptance criterion The client should establish a WebSocket connection to the server if the user selects a car. The connection should be to the namespace of the selected group. If the group is deselected the connection should be closed. The connection should listen to updat events and update the list of cars accordingly.

Invite user to group

Description As a user, I want to invite users to my group
Acceptance criterion A new button is added to the group management dialog which lets the user invite other users to the group. This component lets a user search for the username and invite a user

Revoke admin permission

Description As an admin of a group, I want to revoke admin permission of other members
Acceptance criterion In the member list an admin can revoke the admin permission of another member.

Update group description

Description As a user, I want to update the description of a group
Acceptance criterion In the group management dialog the user can change the description of the group

Delete car from group

Description As a user, I want to delete a car from a group.
Acceptance criterion In the car overview in the group management page, a button is added to each car with which the car can be deleted from the group. This button is only visible to admins of that group.

Add car

Description As an admin of a group, I want to create and add a new car to the group.
Acceptance criterion A FAB is added to the car tab in the group management dialog. With this FAB any admin of that group can open a dialog in which they can create a new car. That car is then shown in the car tab.

View member of a group

Description As a user I want to view all members of the currently selected group.
Acceptance criterion The group management dialog is extended with a list of all members and their role in the group.

Show cars of selected group in drawer

Description As a user, I want to see all cars of the group I selected in the drawer.
Acceptance criterion If a group is selected the drawer should display a list of all cars of that selected group. The cars should be grouped by availability.

Give admin permission

Description As an admin of a group, I want to give other members admin permission
Acceptance criterion In the member list, an admin can give other users admin permission

Add reference to demo at authentication

Description As a user, I want to know that a demo version exists, so I can try it out.
Acceptance criterion On the authentication screen, a small message is added that references the demo website and invites the user to try it out.

Drive car

Description As a member of a group, I want to drive a car.
Acceptance criterion For each available car in the drawer, a button is added with which the user can drive that car.

Create new group

Description As a user, I want to create a new group
Acceptance criterion The create group dialog exists and if the user is not in any group the menu will show a create new group button

View version of frontend and backend

Description As a developer and user, I want to be able to see view the current version of the front- and backend to imrove tracability of errors
Acceptance criterion In the settings, the submenu "Info" is added in which the current version of the front- and backend is shown. This submenu should also be available with the path /settings/info

Kick user

Description As an admin, I want to be able to kick any non-admin members
Acceptance criterion In the member list an admin can kick any non-admin member

Get car in group management

Description As a member of a group, I want to see all cars of a group.
Acceptance criterion The car tab in the group management dialog will show a list of all cars. Each item will show the name, if a member drives it, and by whom, or if it's available.

Show cars on map

Description As a member of a group, I want all parked cars of the selected group to be shown on the map with distinguishable markers.
Acceptance criterion If a group is selected all parked cars are marked on the map with a marker of that cars color.

Join group

Description As a user, I want to join a group
Acceptance criterion In the invite list, a user can join a group for which he/she has an invite

Fab on map for driving and parking

Description As a user, I want to be able to park and drive a car of a selected group as fast as possible via the fab on the map.
Acceptance criterion A fab is added to the screen with which the user can park and drive a car. If the user is currently driving a car, the fab can be used to park that car. If the user is not driving any car. The fab can be used to drive a car from the selected group by clicking on it and selecting a car from the dialog which will then be shown.

Select group

Description As a user I want to be able to select the different groups I am in.
Acceptance criterion In the menu a new button exists which will open a menu in which the user can select any group he/she is a member of.

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.