Build Laravel app with MySql database, authentication system, map integration
Budget: $450 – $800 USD
Build a Laravel App
2pifi will setup web server and give you access
Install front end (can use template - coordinate with me on graphical template)
- sidebar menu
- header, 2pifi logo (supplied)
- favicon (supplied)
MySql database
- User data (each user must be associated to company or set to Admin)
- Device table
1. id, Primary key, int, AUTO_INCREMENT
2. name, varchar(512)
3. imei, varchar(15)
4. phone, varchar(10)
5. iccid, varchar(22)
6. device_status, enum ('active', 'inactive')
7. ac_status, enum ('up', 'down')
8. power_draw enum ('up', 'down')
9. cell_status enum('up', 'down')
- Locations table
1. id, primary key, int auto_increment
2. device_id, int
3. coordinates (POINT)
4. timestamp (datetime)
- Companies Table
1. id, primary key, int, auto_increment
2. name, varchar(512)
3. status, enum ('active','inactive')
4. phone, varchar(32)
5. address1, varchar(128)
6. address2, varchar(128)
7. city, varchar(64)
8. state, varchar(16)
9. postal_code, varchar(8)
10. website, varchar(1024)
Populate database with sample data:
- 10 companies
- 300 locations
- 100 devices
User access restrictions
- Users can be Admin type that has access to all records or Customer type that has access to only devices assigned to their login company
- Use Laravel user library or suggest another mechanism. Passwords should be stored securely and there should be a password reset mechanism for users.
Map integration - We can supply a google maps key or you can recommend alternative mapping API to integrate
- Map displaying records that user has access to.
- Query database to get all all device_status of active devices that user has access to (admins access all devices, standard users access devices associated with their company), join to location table to get last known location, put red markers on map for devices that have ac_status of 'down'; yellow markers for devices having ac_status of 'up' and power_draw of 'down; and green markers on map for devices that have ac_status of 'up' and power_draw status of 'up'
Views
- dashboard view
- Crud views as described below
Sidebar menu
- Dashboard - Displays number of associated devices to your company, number with ac_status down (labeled as "powered down"), number with ac_status of 'up' and power_draw 'down' (labeled as "Device unplugged"), number with ac_status 'up' and power_draw 'up as "online"
CRUD -Create, Read, update, delete
- Admin users should have CRUD views on Companies, devices, users with no restrictions on fields
- Standard User should have access to CRUD views for devices (readonly on all fields except name, phone, iccid), Company (only record matching company ID set on user), Users (only user records associated with company)
- Make recommendation, we can use Grocery Crud for this and have used in the past on Code Igniter sites
- Have a grid view to display multiple records. Columns should be searchable/filterable in javascript without fully reloading page
- have single record 'view' pane
- have single record 'edit' pane
- Should be easy to add a new table with grid view, single record view and edit screen
2pifi will setup web server and give you access
Install front end (can use template - coordinate with me on graphical template)
- sidebar menu
- header, 2pifi logo (supplied)
- favicon (supplied)
MySql database
- User data (each user must be associated to company or set to Admin)
- Device table
1. id, Primary key, int, AUTO_INCREMENT
2. name, varchar(512)
3. imei, varchar(15)
4. phone, varchar(10)
5. iccid, varchar(22)
6. device_status, enum ('active', 'inactive')
7. ac_status, enum ('up', 'down')
8. power_draw enum ('up', 'down')
9. cell_status enum('up', 'down')
- Locations table
1. id, primary key, int auto_increment
2. device_id, int
3. coordinates (POINT)
4. timestamp (datetime)
- Companies Table
1. id, primary key, int, auto_increment
2. name, varchar(512)
3. status, enum ('active','inactive')
4. phone, varchar(32)
5. address1, varchar(128)
6. address2, varchar(128)
7. city, varchar(64)
8. state, varchar(16)
9. postal_code, varchar(8)
10. website, varchar(1024)
Populate database with sample data:
- 10 companies
- 300 locations
- 100 devices
User access restrictions
- Users can be Admin type that has access to all records or Customer type that has access to only devices assigned to their login company
- Use Laravel user library or suggest another mechanism. Passwords should be stored securely and there should be a password reset mechanism for users.
Map integration - We can supply a google maps key or you can recommend alternative mapping API to integrate
- Map displaying records that user has access to.
- Query database to get all all device_status of active devices that user has access to (admins access all devices, standard users access devices associated with their company), join to location table to get last known location, put red markers on map for devices that have ac_status of 'down'; yellow markers for devices having ac_status of 'up' and power_draw of 'down; and green markers on map for devices that have ac_status of 'up' and power_draw status of 'up'
Views
- dashboard view
- Crud views as described below
Sidebar menu
- Dashboard - Displays number of associated devices to your company, number with ac_status down (labeled as "powered down"), number with ac_status of 'up' and power_draw 'down' (labeled as "Device unplugged"), number with ac_status 'up' and power_draw 'up as "online"
CRUD -Create, Read, update, delete
- Admin users should have CRUD views on Companies, devices, users with no restrictions on fields
- Standard User should have access to CRUD views for devices (readonly on all fields except name, phone, iccid), Company (only record matching company ID set on user), Users (only user records associated with company)
- Make recommendation, we can use Grocery Crud for this and have used in the past on Code Igniter sites
- Have a grid view to display multiple records. Columns should be searchable/filterable in javascript without fully reloading page
- have single record 'view' pane
- have single record 'edit' pane
- Should be easy to add a new table with grid view, single record view and edit screen