Responsive web application for managing employee vacations built with .NET Core, EF Core and ReactJS.
- React
- React DatePicker
- React Icons
- React Responsive Modal
- React Router
- React Select
- React Spinkit
- Facebook Emitter
- JWT Decode
- Moment
- Node
- Visual Studio 2017
- SQL Server 2016 LocalDB
- IIS
- 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
)
- 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)
- Application is started on
- 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
- Employee
- 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.
- 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?