Skip to content

Latest commit

 

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ediplan ✂🎥

Summary

Ediplan is...

Install guide

  1. cd to project folder
  2. type npm i
  3. npm run dev

Features

Updated 17/01/2024

🔴 = Not yet started | 🟡 = Started | 🟢 = Complete

Layout

🟡 Must have an intuitive and great looking layout

Dashboard

🔴 Display a dashboard with basic analytics

Asset lists

🔴 Allow user to CRUD assets
🔴 Allow user to filter by property
🔴 Allow user to search by property
🔴 Nice to have: Allow user to assign asset to a group
🔴 Each asset must be given a type: personel/room/equipment/misc
🔴 Tabbed types
🔴 Nice to have: Persistant associations between assets

Nice to have: Groups

🔴 Allow creation of groups
🔴

Bookings

🔴 Allow users to CRUD bookings
🔴 Allow users to assign any type and number of assets to a booking
🔴 Allow users to assign to a project
🔴 Nice to have: Some kind of quote generator

Timeline

🟡 Implement side scrolling timeline that displays bookings in lanes or 'tracks' for each asset type, group, or project.
🔴 Allow users to plus and minus lanes chosing which asset to display from the current type
🔴 Display a popup on hover showing booking details
🔴 When clicking on a booking it should take the user to the bookings page
🔴 Nice to have: Tabbed timelines for groups

Dashboard

🔴 Implemenet some kind of utilisation statistics
🔴 Display upcoming bookings/changes

User

🔴 Include user authorization
🔴 Dark mode option
🔴 Nice to have: E-mail notification options

Persistence

🟡 Front-end must be connected to a backend database (PostgreSQL)


Pages

  • Landing page
  • Login
  • AppLayout
    • Dashboard
    • Timeline
    • Bookings
    • Assets
    • Groups
    • Settings
      • Email notification settings

Tech stack

  • React
  • React Router
  • React Query
  • Styled Components
  • Node.js
  • Express
  • PostgreSQL
  • Axios
  • react-table
  • time-fns

User guide


Planning

Database considerations

Tables:

  1. Assets Table:

    • Attributes: UniqueID (Primary Key), Type, PricePerHour
    • This table holds common attributes for all assets.

  1. PersonAttributes Table:

    • Attributes: UniqueID (Foreign Key referencing Assets), Name, Address
    • This table holds attributes specific to the "Person" asset type.

  1. EquipmentAttributes Table:

    • Attributes: UniqueID (Foreign Key referencing Assets), Make, Model
    • This table holds attributes specific to the "Equipment" asset type.

  1. RoomAttributes Table:
    • Attributes: UniqueID (Foreign Key referencing Assets), Size
    • This table holds attributes specific to the "Room" asset type.

Relationships:

  • One-to-One Relationship:
    • Each entry in the Assets table corresponds to exactly one entry in either PersonAttributes, EquipmentAttributes, or RoomAttributes.
    • Use foreign keys in the specific attribute tables to link them to the Assets table.

Other Considerations:

  1. Foreign Keys:

    • Each specific attribute table should have a foreign key referencing the Assets table.
    • This ensures that each entry in the attribute tables corresponds to a valid entry in the Assets table.

  1. Joins:

    • When querying use JOIN operations to retrieve information about a specific asset type.
    • For efficiency it might be wise to index foreign keys and columns frequently used in joins.

  1. Consistency:

    • Ensure data consistency by using transactions when updating related tables to maintain the integrity of the database.

  1. Data Validation:

    • Implement checks and constraints to ensure that data entered adheres to the expected format and types.

  1. Documentation:

    • Clearly document the relationships, foreign keys, and any constraints for future reference.

  1. Testing:

    • Thoroughly test the database design with sample data to ensure that it meets your requirements and performs well.

Express API

'/assets' route

Route Method Action
/equip GET Fetch all equipment. Basic level of detail for populating tables
/rooms GET Fetch all rooms. Table detail only.
/personnel GET Fetch all personnel. Table level detail only
/:id GET Fetch individual asset by ID. Get all related information.
/equip POST Create new equipment asset.
/rooms POST Create new room asset
/personnel POST Create new person asset
/:id PUT Update asset with particular ID
/:id DELETE Delete asset with particular ID.

Returns

Example returned object from GET request to /asset/:id

asset {
    id: 1,
    created_date: '',
    modified_date: '',

    groups: [{}],
    bookings: [{}],
}

Class Booking {
    id: 0,
    startDate: {}, // Format yet to be defined
    endDate: {},
    duration: 0, // Could this be derived?
    productionName: '',
    assets: [{}],
    guests: [''],
}

About

[NO LONGER MAINTAINED] - A full stack scheduling CSR SPA using React and Node.js

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages