Laravel app
Budget: €8 – €600 EUR
Hi, I'm looking for a freelancer to build an app using the Laravel framework. The app will be used for a small non-profit scuba diving organization.
I'm looking for an individual freelancer or a very small team. I will have more work on this app in the future, so I would like a longer partnership.
I'm looking for a fixed final price offer for the total app development. We can work with milestones release once certain functionalities are deliverd.
I have written the requirements below. Along the way me might have some small adjustments so please take that into consideration and budget. These adjustments might be like an extra field or something. So i'm not going to ask you to add extra complete functionality to the app within the same price.
I'm looking for someone that can start (and finish) quickly.
General
--------------------------------------
- Latest laravel 10 should be used
- backpack for Laravel
- All code should be according to best practices and standards, and should be commented as much as possible
- The application should work well on Android/ios/Windows/mac in all mainstream browsers
- The application should be responsive design
- The application should be translatable (and language must be selectable)
Communication & dev
--------------------------------------
- A trello board shall be used for follow up
- I will provide a dev environment
- GIT should be used
Database
--------------------------------------
- Mysql preferred (but others are welcome)
- No records should be deleted, only soft delete
Auth/user management
--------------------------------------
- There should be a permission system to clearly define roles and permissions (based on https://github.com/Laravel-Backpack/PermissionManager)
- Assigning a role should give permissions to certain pages and functions, which should be configurable from the GUI
- A user can have multiple roles
- A users profile must have a some information records:
- - Firstname
- - Lastname
- - Address
- - Phone
- - E-mail
- - Birthdate (with age calculation
- - Register number
- Some info can be edited by the user itself, other should be edited by a user with an admin role
- A user should be able to change his own profile picture.
- Certain admin users should be able to login as another user to see what they see or perform actions on their behalf
- There should be some kind of 2FA system for certain users. This can be via a login code via mail or a approval link via mail
- A user can be enabled or disabled for login
- Logins and logouts should be logged
- Only admin role users should be able to add users
- Login details (or a password reset mail) should be manually mailed to the user by an admin
Location management
--------------------------------------
- You should be able to add/edit/delete (dive locations) which contain:
- - Name
- - Photo
- - Current (none/moderate/hard)
- - Depth
- - Link
- - Address
- - Notes
- The location detail screen should show all details + photo/google map + a button to organize an event
- An overview page should show all locations on a map
Dive event management
--------------------------------------
- Users with the correct role should be able to create an event
- A dive event should have these details:
- - Date (in the future)
- - Briefing time
- - Dive time
- - Dive location (selectable)
- - Organizer (person that added the dive)
- - Description
- Everyone should be able to view dives. Only certain users roles should be able to add dives.
- Once a dive is added, it should be possible to register users for the dive.
- A registration consists of:
- - Registered user
- - User that did the registration
- - Note
- The registration can be done by:
- - The user itself
- - Administrator
- - Person that created the dive
- On the user profile, in a tab, all registered dives should be shown.
- Once a dive is added, all users should receive an e-mail with a link that allows registering for the dive event, without login (magic link)
Qualification management
--------------------------------------
- Members can have multiple qualifications. A qualification has a qualification type, which also indicate it should expire or not.
- There should be a separate page to manage qualifications and qualification types
- Via users management I should be able to add 1 or more qualifications. A start date should be given. and when expires is true, an end date should be given.
- The qualification registration should be shown to all users.
- Qualifications have a priority to indicate the highest qualification for a user.
- Qualifications:
- - name
- - qualificationtype
- - priority
- The qualificationtypes are:
- - certification (no expiration)
- - depth (no expiration)
- - HVD (expiration)
So an example qualificationregistration would be:
- - user
- - qualification
- - startdate
- - enddate
- - notes
Log system
--------------------------------------
- Every action that a user does should be logged, and viewable in a searchable log (based on https://github.com/Laravel-Backpack/activity-log)
- When any record is changed, the old and new values should be stored in the log
- A log entry should be viewable from the related object. For example, if a user updated a dive entry, it should be viewable from that dive in a separate tab
Notification system
--------------------------------------
- There should be some kind of notification system for certain events:
- - birthday
- - qualification expiry
- - certain records added
- - dive event added
- - …
- These notifications should be sent via:
- - In app
- - Browser notification
- - Email
-> in a later stage I might want to add other notification types as well, like SMS or whatsapp. That shouldn't be included now, but it should be easy to plug them in later.
- Text should be configurable for each event type
- It should with some kind of queue system
- Users should be able to turn notifications on or off (and how they want to receive it). However, certain notifications should only be sent to administrators (so a user should not be able to see it)
- Every user should be able to see a history of the events in the app. An administrator should also be able to see all notifications that was sent to an user (in a tab on the profile page).
Notes
--------------------------------------
- You should be able to add multiple notes to certain objects:
- - users
- - divelocations
- - dives
- - …
- You should be able to select who can view the notes (based on permission role). By default notes should only be shown to the same permission level and higher
Search
--------------------------------------
- There needs to be a general search function to quickly find objects within users/dives/divelocations/..
I'm looking for an individual freelancer or a very small team. I will have more work on this app in the future, so I would like a longer partnership.
I'm looking for a fixed final price offer for the total app development. We can work with milestones release once certain functionalities are deliverd.
I have written the requirements below. Along the way me might have some small adjustments so please take that into consideration and budget. These adjustments might be like an extra field or something. So i'm not going to ask you to add extra complete functionality to the app within the same price.
I'm looking for someone that can start (and finish) quickly.
General
--------------------------------------
- Latest laravel 10 should be used
- backpack for Laravel
- All code should be according to best practices and standards, and should be commented as much as possible
- The application should work well on Android/ios/Windows/mac in all mainstream browsers
- The application should be responsive design
- The application should be translatable (and language must be selectable)
Communication & dev
--------------------------------------
- A trello board shall be used for follow up
- I will provide a dev environment
- GIT should be used
Database
--------------------------------------
- Mysql preferred (but others are welcome)
- No records should be deleted, only soft delete
Auth/user management
--------------------------------------
- There should be a permission system to clearly define roles and permissions (based on https://github.com/Laravel-Backpack/PermissionManager)
- Assigning a role should give permissions to certain pages and functions, which should be configurable from the GUI
- A user can have multiple roles
- A users profile must have a some information records:
- - Firstname
- - Lastname
- - Address
- - Phone
- - Birthdate (with age calculation
- - Register number
- Some info can be edited by the user itself, other should be edited by a user with an admin role
- A user should be able to change his own profile picture.
- Certain admin users should be able to login as another user to see what they see or perform actions on their behalf
- There should be some kind of 2FA system for certain users. This can be via a login code via mail or a approval link via mail
- A user can be enabled or disabled for login
- Logins and logouts should be logged
- Only admin role users should be able to add users
- Login details (or a password reset mail) should be manually mailed to the user by an admin
Location management
--------------------------------------
- You should be able to add/edit/delete (dive locations) which contain:
- - Name
- - Photo
- - Current (none/moderate/hard)
- - Depth
- - Link
- - Address
- - Notes
- The location detail screen should show all details + photo/google map + a button to organize an event
- An overview page should show all locations on a map
Dive event management
--------------------------------------
- Users with the correct role should be able to create an event
- A dive event should have these details:
- - Date (in the future)
- - Briefing time
- - Dive time
- - Dive location (selectable)
- - Organizer (person that added the dive)
- - Description
- Everyone should be able to view dives. Only certain users roles should be able to add dives.
- Once a dive is added, it should be possible to register users for the dive.
- A registration consists of:
- - Registered user
- - User that did the registration
- - Note
- The registration can be done by:
- - The user itself
- - Administrator
- - Person that created the dive
- On the user profile, in a tab, all registered dives should be shown.
- Once a dive is added, all users should receive an e-mail with a link that allows registering for the dive event, without login (magic link)
Qualification management
--------------------------------------
- Members can have multiple qualifications. A qualification has a qualification type, which also indicate it should expire or not.
- There should be a separate page to manage qualifications and qualification types
- Via users management I should be able to add 1 or more qualifications. A start date should be given. and when expires is true, an end date should be given.
- The qualification registration should be shown to all users.
- Qualifications have a priority to indicate the highest qualification for a user.
- Qualifications:
- - name
- - qualificationtype
- - priority
- The qualificationtypes are:
- - certification (no expiration)
- - depth (no expiration)
- - HVD (expiration)
So an example qualificationregistration would be:
- - user
- - qualification
- - startdate
- - enddate
- - notes
Log system
--------------------------------------
- Every action that a user does should be logged, and viewable in a searchable log (based on https://github.com/Laravel-Backpack/activity-log)
- When any record is changed, the old and new values should be stored in the log
- A log entry should be viewable from the related object. For example, if a user updated a dive entry, it should be viewable from that dive in a separate tab
Notification system
--------------------------------------
- There should be some kind of notification system for certain events:
- - birthday
- - qualification expiry
- - certain records added
- - dive event added
- - …
- These notifications should be sent via:
- - In app
- - Browser notification
-> in a later stage I might want to add other notification types as well, like SMS or whatsapp. That shouldn't be included now, but it should be easy to plug them in later.
- Text should be configurable for each event type
- It should with some kind of queue system
- Users should be able to turn notifications on or off (and how they want to receive it). However, certain notifications should only be sent to administrators (so a user should not be able to see it)
- Every user should be able to see a history of the events in the app. An administrator should also be able to see all notifications that was sent to an user (in a tab on the profile page).
Notes
--------------------------------------
- You should be able to add multiple notes to certain objects:
- - users
- - divelocations
- - dives
- - …
- You should be able to select who can view the notes (based on permission role). By default notes should only be shown to the same permission level and higher
Search
--------------------------------------
- There needs to be a general search function to quickly find objects within users/dives/divelocations/..