Git Product home page Git Product logo

vacationcalendar's Introduction

VacationCalendar

Responsive web application for managing employee vacations built with .NET Core, EF Core and ReactJS.

Build status

Dependencies

Backend

Frontend

Getting started

Prerequisites

  1. Node
  2. Visual Studio 2017
  3. SQL Server 2016 LocalDB
  4. IIS

Running the application

  1. Open VS project (API) and run the application
    • VS will restore nuget packages
    • Database will be created and initial data is seeded
    • Application is started on http://localhost:56864/ and API documentation is displayed (/docs)
  2. Open Node.js command prompt
    • Navigate to Web folder
    • Invoke npm install
      • Packages will be restored
    • Invoke npm start
      • Application is started on http://localhost:3000
      • If you want to change the port of the app, you must also change it in the appsettings.json (Section Data, Key ReactAppUrl) (CORS)

Using the application

  • Home
    • Displays users and their vacation calendars
    • Navigation is enabled by year and month
    • Results can be filtered by name of the user and vacation dates
  • User
    • Employee
      • Displays list of vacations by year as well as yearly calendar
      • Enables adding and modifying vacations
    • Admin
      • Displays list of entered user vacations for year
      • Enables confirmation or rejection of vacations
  • Login/Logout
    • When user is not logged in, display Login page
    • When user is logged in, clicking on the menu will log him out

Randomly generated users and their login data (email, password) can be found in SeedHelper class. For administrators, password is 'admin'. For other users, password is their first name in lowercase.

To do (and why)

  • DB concurrency - two users who are working on the same item can override one another when saving
  • Batch DB update - one save is called on one item add/update
  • Paging - display and DB operations will be clustered with data if there are several times more users
  • React render optimizations - components should be decoupled even more to enable rendering of specific data only
  • Error handling (frontend) - alert window is displayed in most of the cases which is not very user friendly
  • Bundling and minifying - because...web!
  • Config (frontend) - API url is in service and it should be in config
  • CSS styles reorganization - most of the styles are in App.css, it is not very easy to find what you want
  • Some strange SQL error is thrown when starting the application for the first time, but DB gets created and initial data is seeded, so this is not a priority
  • Unit test project - should this be explained at all?

vacationcalendar's People

Contributors

dependabot[bot] avatar zagorec92 avatar

Watchers

 avatar  avatar

Forkers

shivarkzs

vacationcalendar's Issues

Move data generation from DbContext

At the moment, seed data is generated in AppDbContext class.
AppDbContext should be worried about seeding the actual data, not generating it.

Data generation should be moved to another class which would contain logic for creating sample data and nothing else.

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.