A fullstack javscript app (expressjs/reactjs) for tracking timesheets for hourly employees.
View project description & demo
To set this up locally for yourself would require a few steps:
- Install & configure postgreSQL
- Clone this project.
- Install at two locations:
- root directory (For the clientside development package.json)
- server directory: ./src/server (For the serverside development package.json)
- Create .env file credentials (DB, API) -- See file "example-.env.file.txt" for instructions.
- Run knex db migrations & seeding, and manually create sessions table for express-sessions
- Compile frontend client with webpack configuration files
- Run server ("npm run dev" -- see clientside package.json)
- Admin page: http://localhost:3000/dashboard/admin_dash
- Registration page: http://localhost:3000/auth/register --> forwards to employee page
- Login page: http://localhost:3000/auth/login --> forwards to employee page
| Framework | Purpose |
|---|---|
| ReactJS | Main structure of frontend application logic, including user experience and backend communication |
| Redux | Maintains frontend application state in centralized location |
| Webpack | Bundles multiple project files and packages together into single files and transforms them for optimized browser experience |
| Babel | Transpiles ReactJS components & css, configures javascript for targeted browser(s) |
| Framework | Purpose |
|---|---|
| Sass | An enhanced version of css, allowing for programmatic, extendible, compiled css (sass/scss) |
| Bulma | A simple css frontend design and formatting framework |
| Bootstrap | A responsive, sass framework (used with react-bootstrap-table) |
| API | Purpose |
|---|---|
| Google Maps | Mapping employee system users (timesheet clockin/clockout) |
| Google Map address auto-complete | Automatically completes geographical address information as user type (employee/user profile) |
| App's backend REST API | Database communication including user authentication & business data CRUD |
| Package | Purpose |
|---|---|
| NodeJS | Underlying runtime environment which executes javascript server code |
| ExpressJS | Minimalist server web application framework & REST API |
| bluebird | Enhances asynchronous programming |
| csurf | API communication validation & form security |
| bcrypt | Oneway password encryption in user authentication system |
| express-session | Temporarily stores user-related application information such as user permissions, application configuration, and application messages |
| KnexJS | Interacts with PostgreSQL database to implment database connectivity & data retrieval in javascript |
| multer | Uploads files |
| Platform | Purpose |
|---|---|
| PostgreSQL | SQL Database |
| Nginx | Web server software |
| Ubuntu Server | Server operating system |
(Generated with DbVis)
![]()
I written any tests yet, but plan to. (REST API test examples: