Giter Club home page Giter Club logo

cabin-management's Introduction

Cabin Management

๐Ÿ‘€ this app is currently in-devlopment. i.e. is not in production or production ready.

A "managment" application to help manage reservations for family/friends cabins. It also includes many helpful notes such as how-to guides, what groceries are needed etc.

npm Scripts

In the project directory, you can run:

npm start

Runs the app in the development mode.
Open http://localhost:3000 to view it in the browser.

The page will reload if you make edits. You will also see any lint errors in the console.

npm test

Launches the test runner in the interactive watch mode.

npm run build

Builds the app for production to the build folder. It correctly bundles React in production mode and optimizes the build for the best performance.

The build is minified and the filenames include the hashes.

This project was bootstrapped with Create React App. -- Thank you CRA team!

cabin-management's People

Contributors

jagretz avatar

Watchers

 avatar

cabin-management's Issues

Display email invitations and the status of the request

Acceptance Criteria

As a user, I want to...

  • See the invitations I sent as well as their status: accepted, declined, sent.
  • Be able to re-send an invitation / reminder

Additional Details

Open Questions

  • Do we have the service API to complete this feature?

Add user roles and permissions

TBD...

We also need to have a default user role when someone accepts an invitation, and secondly, set the users role during the add / invite process.

Acceptance Criteria

As a user, I want to...

A brief explanation of the feature

So that... explain why this feature is desired

Additional Details

Provide any additional details, notes, technical details, helpful information, etc.

Open Questions

  • What about...

Create a cabin to manage

Acceptance Criteria

As a user, I want to...

be able to create a cabin so that I can manage the cabin from the app.

The cabin should have:

  • name
  • description (optional)
  • address

When I revisit the application, I should see the cabin I created in a previous session.

Additional Details

  • name: string, 50 chars, alpha-numeric and special characters
  • description (optional): string, 200 chars, alpha-numeric and special characters
  • address: string, 200 chars, alpha-numeric and special characters
    • Does not need ot be a verifiable address right now, that can come later.

The cabin details need to persist somewhere. This ticket will require some UX, UI, and API development.

Can invite users by email

Acceptance Criteria

As a user, I want to...

be able to invite other users to join my cabin calendar

Additional Details

The basic idea is to create invitations and view them in the database. They do not need to be sent out in order to complete in this ticket.

  • Can invite users by using an email address.
    • Use a simple regexp for email address validation as a starting point. More complex validations can be added later.
  • Invitations should be stored in the DB
  • Invitations do not need to be emailed out right now.

Open Questions

Decide on whether this request should hit the cabin API or the firestore API.

Style social media logins and separate email and address login

Acceptance Criteria

As a user, I want to...

See a common button for social media logins

So that the login design in familiar, and I feel comfortable using these login methods.

Additional Details

There are plenty of custom user libraries we can use, but first see what options are available through firebase and the social login providers themselves.

Add support for emoji to cabin input fields: name, description

TBD...

Acceptance Criteria

As a user, I want to...

A brief explanation of the feature

So that... explain why this feature is desired

Additional Details

Provide any additional details, notes, technical details, helpful information, etc.

Open Questions

  • What about...

Add a waiting list

TBD...

ie. if someone books a date you want, you should be able to request that date in case the other person cancels (which happens often).

Perhaps you might even be able to chat with that person to see if it would be ok for you to use the cabin at the same time

Acceptance Criteria

As a user, I want to...

A brief explanation of the feature

So that... explain why this feature is desired

Additional Details

Provide any additional details, notes, technical details, helpful information, etc.

Open Questions

  • What about...

Create an account and log into the account

Acceptance Criteria

As a user, I want to...

create an account and be able to login using Google, Facebook, Twitter social media logins, or a separate email address and password.

If the email address used is associated with multiple social media logins or a separate email and password, only one account is created and used.

Additional Notes

Only one record should be saved, used, updated in the DB.

Add an optional image for the cabin

TBD...

  • Can upload an image
  • Provide a set of default images or SVGs to default to or select from
    • This should be removable
  • What is the max size or do we modify the resolution (50x50px?)

Acceptance Criteria

As a user, I want to...

A brief explanation of the feature

So that... explain why this feature is desired

Additional Details

Provide any additional details, notes, technical details, helpful information, etc.

Open Questions

  • What about...

Can book a day/time slot

TBD... Anyone can book a day/time slot.

  • Before user roles / permissions are a thing
  • day/time should be based on the users day/time (browser) but persist in one consistent format

Acceptance Criteria

As a user, I want to...

A brief explanation of the feature

So that... explain why this feature is desired

Additional Details

Provide any additional details, notes, technical details, helpful information, etc.

Open Questions

  • What about...

Add multiple users and send invitations as part of a single step

i.e. I shouldn't have to add one user at a time. I should be able to quickly add multiple users, and then send out the invitation in bulk -- a click of a button -- as opposed to one at a time.

Acceptance Criteria

As a user, I want to...

A brief explanation of the feature

So that... explain why this feature is desired

Additional Details

Provide any additional details, notes, technical details, helpful information, etc.

Open Questions

  • What about...

Display calendar with events

TBD.... show a calendar and the type of events: bookings, requests, etc.

Acceptance Criteria

As a user, I want to...

A brief explanation of the feature

So that... explain why this feature is desired

Additional Details

Provide any additional details, notes, technical details, helpful information, etc.

Open Questions

  • What about...

View bookings in different display formats with filters

TBD...

  • Perhaps user preference, perhaps it's easier to find what you are looking for,
    • I should be able to show books in calendar view: day, week, month, in list view and be able to filter on the month, a date range, and type of booking: requests, approved, etc

Acceptance Criteria

As a user, I want to...

A brief explanation of the feature

So that... explain why this feature is desired

Additional Details

Provide any additional details, notes, technical details, helpful information, etc.

Open Questions

  • What about...

Can edit user roles and permission

Acceptance Criteria

As a user, I want to...

A brief explanation of the feature

So that... explain why this feature is desired

Additional Details

Provide any additional details, notes, technical details, helpful information, etc.

Open Questions

  • What about...

Validate invited users emails in the UI

Acceptance Criteria

As a user, I want to...

know right away whether an email is valid or not

So that I do not accidently try to invite someone with an invalid email.

Additional Details

Add UI email validation based on email address semantics.

Questions

Should there also be a separate backend service validation which will ping the email? This is to ensure invitations are send to only valid emails.

  • I don't think this is necessary.

Validate the cabin address

Acceptance Criteria

As a user, I want

the address I add to be a valid

So that other users can use the address to get directions to the cabin.

Additional Details

Open Questions

Needs

  • Free address checking API to interface with.

Add and display users avatar

TBD...

  • Show users avatar
    • Use social media, gravatar, or add a custom image (50 x 50px?)
    • Can upload an image

Acceptance Criteria

As a user, I want to...

A brief explanation of the feature

So that... explain why this feature is desired

Additional Details

Provide any additional details, notes, technical details, helpful information, etc.

Open Questions

  • What about...

As an admin, I should be able to see a list of all cabins in the app

Acceptance criteria
Visit /admin - view a list of all cabins currently tracked by the app.

Potential next steps

  • Display all events for all cabins
  • Hide page/route for non-admin users
  • New page (non-admin page to display all my approved cabins)

Notes
Since the concepts of log ins/users/roles/cabins don't yet exist, we have a lot of flexibility in how much to tackle. Some options:

  • auth middleware
    • easy - include a stub middleware that says every user has the necessary permissions to access this route
    • hard - checking roles for admin, render route/data if user has necessary permissions
      • will require figuring out logging in, user management, etc.
  • mechanism for storing users, roles, etc. (firebase...?)
  • storing data
    • easy - stub out some prelim cabin data in an in-memory DAO js file
    • hard - full blown database that we insert stub data into
  • first page up in the front end => display cabins
    • easy - hit firebase/express endpoint/etc, receive cabins
    • re:curious if youโ€™d be interested/willing to try something like Tailwind/atomic css
      • i'm curious in seeing pro's/con's of this CSS methodology for myself, not a requirement for this ticket, though

Select users / invitees from my social media contacts

Acceptance Criteria

As a user, I want to...

A brief explanation of the feature

So that... explain why this feature is desired

Additional Details

Provide any additional details, notes, technical details, helpful information, etc.

Open Questions

  • What about...

Switch to use Cloud Firestore instead of Realtime Database

Acceptance Criteria

As a developer, I want to...

Switch to using Cloud Firestore to ease DB management.

Additional Notes

Currently records are stored in Realtime Database.

Realtime Database will likely deprecate in favor of Firestore.

Can invite multiple users by email

Acceptance Criteria

As a user, I want to...

be able to invite multiple other users to join my cabin calendar

Additional Details

Same criteria in #5 applies here as well.

Send email invite to users with a valid email address

Dependencies

Acceptance Criteria

As a user, I want to...

my invitees to receive an email notifying them that they have been invited to join my cabin calendar.

Additional Details

Send emails from the backend service, not from the UI.

Emails should be valid.

Open Questions

What to when...

  • an email service has decline the request due to invalid email or other
  • user has declined invite... should the email contain a link (button) to decline the invite?

Receive notifications when bookings are requests or details change

TBD...

  • The owner / admins should receive requests / cancellations, etc
  • The users should receive approves, declines, etc

Acceptance Criteria

As a user, I want to...

A brief explanation of the feature

So that... explain why this feature is desired

Additional Details

Provide any additional details, notes, technical details, helpful information, etc.

Open Questions

  • What about...

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.