[✨] schema.json now loads for SEO purposes.
[✨] Tags can now be added to Blog models.
[✨] Staging static and media files are now contained in their own bucket.
[👍] Sitemap.xml now includes the Blog urls.
[👍] Fixed dynamic base to better to use og:image and og:description
[🐛] From email was never set so the activation and password reset emails were not being sent.
[🐛] Looking for changes before the booking had changes was breaking the creation of the booking.
[🐛] Hotfix: Fixed the color of the icons on the social buttons of the sign up and log in page.
[🐛] Hotfix: When the booking was being charged the paid_at wasn't being saved so the status of the booking was not reflecting correctly.
[🐛] Hotfix: Finally fixed the account activation email because
ACCOUNT_EMAIL_VERIFICATION was not set and Heroku was not happy about it.
[🐛] Hotfix: Automated recharging of Twilio account so that our automated messages never get stopped due to not being funded.
django-allauth was erroring out due to improper email configuration.
StatusUpdate.has_milage_and_duration was erroring out on due to checking for the field on
[✨] Interval running tasks so that we can run our schedule tasks in
[✨] Created our first real homepage that introduces the proper information.
[👍] Rearranged the navbar to better seperate areas of content.
[👍] Bundled media files into Amazon S3 Buckets.
[👍] Made the secure website values much more secure as they are not stored anywhere that is accessible.
[👍] Added alt tags to the base images of the website for accessibility access.
[✨] Offloaded the static files of the website to utilize Amazon S3 Buckets.
[✨] An element that will allow any HTML-aware team member to put the blog newsletter sign up form in the places of their choosing.
[✨] Changed hosts from PythonAnywhere to Heroku.
[✨] Blog has been implemented
[👍] Rearranged the navbar to better seperate areas of content.
[✨] Improved transactional emails significantly. Now using Mailchimp and Mandrill we have much more control over what is said.
[👍] Improved the performance of the website loading.
[👍] Improved the layout of the footer by a large margin.
[✨] Changed database structures from Sqlite3 to Postgre
[✨] Changed hosts from PythonAnywhere to Heroku.
[🐛] Fixed grandfather bug that was breaking the summary.
[🐛] Fixed inaccurate representation of the time difference.
[🐛] Removed any mention of Coronavirus and the quizzing ability to become knowledgeable.
.days_afteris not set to 0 instead of null by default.
[🐛] The payroll total columns were inversed showing in the wrong column.
[🐛] Automated reminders hitting error
TypeError: '>' not supported between instances of 'NoneType' and 'int'
ServiceOptiondid not have a default value so comparing it by default without checking was introducing unforseen issues.
This update comes with a big collection of bug fixes and small feature improvements.
[👍] Implemented the prevention of automatic reminders being sent if the booking has
[👍] Disclaimer under the date/time section on the booking form for the arrival window.
[✨] sitemap.xml for all of the website robots to crawl.
django.contrib.redirects.middleware.RedirectFallbackMiddleware to allow for 301 Moved Permanently redirects when a url changes.
[✨] Social share image so that our branding is immediately introduced when the link is shared.
[✨] OpenGraph meta information.
[✨] Meta titles and descriptions to all static pages.
[✨] Ability to clear the StatusUpdates that are action based on the cleaners part.
[✨] Client field to the booking form.
[✨] django-debug-toolbar to prepare for performance improvements and database query decreases.
[✨] Implemented scrolling summary to the sidebar of the booking form so that the summary will follow the user as they scroll when they are on a desktop.
[🐛] Had a typo misspelling 'is_employee' so fixed that.
[🐛] The pagination on
TimeRequests was erroring out because we were returnning
.requests_for_user instead of an empty
.grandfather_amount was throwing an error when it wasn't set to anything.
[👍] Follow up messages are now sent exactly 24 hours after the date and time of the booking.
[👍] Automated reminders are now established to be running at all times.
[👍] Phone number formatting on the booking page and profile page.
[👍] Changelog formatting was updated to reflect consistent styling across the rest of the website and development environment.
[👍] Formatted of the payment descriptions that can be found in the Stripe dashboard with the format
%s %s | %s / %s %s Cleaning | Homeer
[👍] Updated the order of the action buttons on the booking page to follow a simple line of action.
[👍] Formatted the way that the disable communication checkboxes are laid out on the booking page.
[👍] Formatted the server startup output
[🐛] Team notifications were sending the date and time of the previous booking although the link was correct and the time and date were set correctly. Just after the notification had been sent.
[🐛] Grandfather summary breakdown wasn't being shown on the Booking form summary section.
View Use booking link on the key page was a broken link.
[🐛] The key form wasn't showing all fields by default until the key had been created.
[🐛] The key form wasn't instantiating with the correct information when the object already existed.
[🐛] Payment form wasn't showing after the booking was charged so we couldn't fix any payment errors.
[🐛] Making the unpaid status indicator of bookings red.
[🐛] Fixed the formatting of the status counters on the table pages of each respective object list page.
[🐛] Fixed payment processing to honor the expiration date of the grandfathering and update it to charge the full amount of the expiration date has passed.
[🐛] Fixed the priority of the booking finishing view so that when staff users clock out and they are part of the booking, it allows other cleaners to clock themselves out.
[🐛] When a future booking is automatically scheduled we weren't updating the package to the Signature clean and it was keeping that package that was put in for the first booking.
[🐛] Fixed the processing the milage_and_duration calculations as they were using the bookings in the backwards order.
[🐛] Weren't displaying the team members changed when a booking is edited.
[🐛] Fixed typo preventing reminders from sending in send_reminder when
.disable_notification was checked.
[🐛] Weren't setting the phone number of the clients when the booking was set.
[🐛] Showing the phone number field value on the profile page even when it wasn't set.
Small improvements that allow the staff to transfer over and management payment information of profiles and bookings with much more ease.
Payment method section on the booking page now shows the last four digits of the default source id before display
[🐛] Fixing the inability to assign with the migration of payments.
This update came on the heels of the previous update because Stripe finally transferered over our payment information. We can now go through our existing bookings and update the payment information of the users.
stripe_id field to the profile settings form.
default_source_id field to the profile settings form.
/changelog/ link in the footer of all pages.
Updated the priority for payments of bookings to use the booking
source_id and then the
default_source_id of the
.custom-checkbox on the
bypass_payment field of the booking form.
.custom-checkbox to all checkboxes on the profile settings page.
Implemented a corona knowledge quiz at
Email collection with this an automatically segmetting the users into their own audience.
Added titles to a few specific pages. The rest of the pages will get titles once we are completed with the campaign.
Footer column formatting for mobile devices.
Implemented automatic scrolling up to the top when you click 'Next Question' on a quiz question page.
[🐛] Fixed the processing of time requests for non-staf users.
[🐛] Fixed the inability to submit a search on /payroll/ due to the filter
is_null instead of
This update here is a massive rework of the foundation of progression on Homeer. A lot of the messes have been cleaned up that include ternary loops, shorthand, lack of documentation where it was actually needed and spreading things across multiple apps that should have been located in the same place.
Object table base template to prevent syling and logic changes across tables.
Object pagination on profile page with 10 objects to each table.
Object pagination with 25 objects to each respective table page.
Good morning texts.
Booking update table
Coming with this we can now see what fields change when the booking is edited so we can track down when something goes wrong.
Error logs for all communication methods that are controlled from the booking.
Now display the error message on failure to send a communication method instead of hitting an error page.
Massively reworked the way that we use StatusUpdates for our the Booking model.
Previously we were storing all history of the changes in out database. Not having used the functionality as well as introducing large overhead we are now operating much more efficiently and not having to store so much information is in the database.
scripts/place_holds.py to stop relying on the ternary loop.
StatusUpdate.HOLD_PLACED from being created within the function to where it was initially called.
Moved the Booking related views located in Status to the Booking app in an attempt to clean up the spaghetti.
Cleaned up time request infrastructure.
Performance improvements when accessing the time requests page.
Performance increases when approving/denying time requests.
Changed view name from
Now process confirmation emails and notification texts as the operating function and no longer the StatusUpdate. - The StatusUpdate model is intended only to work as read-only and not trigger any actions.
Rewrote the automatic follow up implementation script loop.
Automatic follow ups are now triggered from
Booking.send_follow_up() instead of
Updated the base processing of sending the reminder and creating the StatusUpdate for the automatically scheduled reminders in
Booking.send_confirmation() is to be used to send the confirmation email instead of creating a
Booking.send_notification() is to be used to send the notification text instead of creating a
Booking.send_receipt() now returns a success value so that we can reflect the appropriate message when a user clicks the link.
Hiding the confirmation and receipt buttons on the booking page when the booking is being invoiced.
[🐛] Time Requests were being deleted although they should've been archived.
[🐛] Hid non-pending time requests from the profile page of non-staff users.
[🐛] Couldn't search for objects because uuid was being checked which resulted in an invalid filter query.
.history() from the Booking model.
Booking.is_paid_through_invoice from the Booking model.
Booking.is_client_blacklisted moved from the Booking model and into a single call from
Hotfix: Finalizing a few bug fixes to make sure that we are good and ready t
[🐛] Time Requests that are displayed on the tables didn't match the page.
[🐛] Failed to import libraries and was having dependency issues.
Fixing a few bugs that our team has encountered as we are transitioning over to this new system.
Rephrased the baseboard section of our cleaning checklist.
Automatic communications are prevented when the booking has been archived.
Communication buttons are now hidden while the booking is archived.
[🐛] Staff users couldn't submit the Time Request form.
[🐛] Staff users are no longer prompted to enter a password when a new account is created during booking creation.
[🐛] Empty QuerySet tables were displaying the empty message in the incorrect place.
We now hide the form entirely and only show a simple tag.
[🐛] Key and StatusUpdate weren't being shown on the admin dashboard.
[🐛] Were showing progress buttons for Bookings when they were too late on the booking page.
Updating to follow proper development standards.
Small performance improvements, a few bug fixes and the final features to be fully operational.
New refund modal that allows us to refund bookings from the Homeer website instead of having to go into the Stripe Dashboard.
Ability to mark discounts as persistent.
This field cannot be checked per booking and is instead processing per discount. So, for a discount to be persistent a staff user must edit the ServiceOption object that defines that discount.
Format emojis properly with a base template.
Wrapped all emojis in the proper image tags so that we can follow the best web conventions and allow screen readers to parse our emojis and their alt messages.
Payroll page for staff users.
This allows us to retrieve all of the bookings between a start and end date with all of the monetary returns that are needed to calculate payroll.
Notes: There is nothing in place that actually pays the team members. This is simply calculation being taken care of.
We now have a mass way to mark commercial bookings as paid. Working very similar to the payroll page a staff user must choose the client, start date, and end date. When that is selected a table is returned allowing the staff user to set the fields without having to do anything additional.
Notes: It is important that when invoicing a client that we update the information as it happens.
status_countertemplates into the snippets folder
Moved the structure of the
table templates into the snippets folder
[🐛] Custom file input wasn't loading correctly.
[🐛] Subsequent booking mileage was being thrown in the inverse situation due to json import failure.
[🐛] Future action buttons weren't displaying in the corret order with key actions complete.
[🐛] Couldn't capture the charge for a booking once the hold had expired.
[🐛] All edited bookings were receiving the
justBooked URL parameter and creating a transaction in our event systems.
[🐛] Mailchimp wasn't posting the merge tags because we had declared them incorrectly during initial setup.
[🐛] Timeslot was resetting to 8am regardless the actual booked time of the booking.
[🐛] Revert/Clear button for the time section of the Booking form wasn't working correctly.
This update was a big one. We basically reworked our entire website so that we would not have speed issues (due to the website) any longer. With this comes an extremely simplified design and approach to our dashboard.
With the completion of this version we officially have a beautiful skeleton that is ready to be built on top of.
Full booking management in a single page that updates as the booking progresses.
For Bookings we stripped down the back-end processing of it and simplified it greatly. Visually, not much is changing for you. You will still see the relevant action buttons as they become needed. You don't have to do anything special.
Previews to give our team members a frame of reference when they go to the cleaning.
Previews allow you to see a quick snapshot of the address that you will be going to. This will not always be the exact location and is only their to serve as a frame of reference. You can disable the previews by clicking on Hide Previews and show them by clicking on Reveal Previews at the top of the booking page. Only team members have the option to see this preview.
Automatic mileage tracking for team members when they are driving between bookings.
Mileage tacking includesthe drive between cleanings when a team member has subsequent bookigns. Team members will select the option of
Sitting in front of the previous booking when you clocking in as on the way. By checking that box the system will calculate the mileage automatically and display on the payroll output. This is the mileage that will be used for reimbursements.
Custom follow up collection script with live feedback aggregation to the website.
Rating integration allows team members to see what the client rated each respective booking. This is not immediately visible as the client has to submit their feedback first, but as they respond to their text messages the information will be populated. Their is no notification system in place to notify you when a booking has been rated as this will be calculated in more of a
mean average mannager.
Clients now have an area on their booking form to leave a tip.
When a booking receives a tip the amount will be displayed on the receipt as well as the amount will automatically be split among the team members during payroll. If a client asks how they can give you a tip you have the option of cash, them logging in to their account and going to the bottom of their booking form, or even have them call the office. Homeers' system still cannot charge a tip after the booking has been charged so if a client mentions a tip being managers need to be notified immediately so that they can reach out and get that added.
Key storage with pictures and assignment so that no one ever has to wonder who has the key and where it is.
We are now keeping an online database of the keys associated to clients and bookings so that our team members don't have to wonder what key belongs to who and what house. If a booking or client has a key associated with them you will see a
View Key button.
Time requests tied to your account.
Time Requestsin your Profile dropdown of the navigation bar at the top.
Delivering stunning quality home care services to our busy Texan community members with a satisfaction guarantee, flat-rate pricing and zero shady fees.