[👍] Small margin updates to the list on the Changelog for things to be seperated more clearly.
[👍] The staff settings are no longer disabled when a staff user is accessing.
[👍] All users and staff users can now find their email information at the bottom of their profile settings page.
[👍] Small layout changes on the booking form.
[👍] Updating the /accounts/email/ respect the rest of the dashboard styling.
[👍] When a profile is created in the dashboard an activation email will be automatically sent because no password has been set. When this new profile user goes to active their account they will be logged in and the website will grab them and have them set their password before proceeding any further.
[👍] Implemented account completion for purchasers of Gift Cards.
[🐛] The Create button for Profiles has been removed. Profiles should only be created in the backend by the system and from the register page.
[🐛] When using future scheduling the date would be changed on the previous one instead of the new one. This has been fixed and now schedule future does not change the booking that the 'Schedule Future' button was clicked on, only the new one.
[🐛] The email area on the profile form was not working and although we could see the emails that were associated with the user, we could not send activation emails. This is a design feature. The best recourse to follow if they did not active their account and did not go to 'Forgot Password' and set up a password.
[👍] Disabled automatic reminders and follow up messages for commercial cleanings.
[👍] We are no longer adding emails that have 'homeer' in them to the Mailchimp sequence.
[👍] Updated the 'Starting from' text on the homepage of the website to reflect the actual lowest price.
[👍] Activation emails are now being sent for profiles even when a staff user creates the booking for the profile. By using the activation link they will log in and be forced to set their password if the field
.must_reset_password is set to True on the profile.
[🐛] When a lead was being submit we would send the text twice because it was being included in the base and in the index file.
[🐛] An extra horizontal line was showing for staff members on the booking page when team members were not yet assigned.
[🐛] The breadcrumbs of the gift card page contained the link to the leads list instead of the gift cards list.
[🐛] Confirmation emails for the gift cards are now being sent.
[🐛] When a Gift Card was added to a booking we would be in an infinite loop of trying to calculate the price and it would crash the website. Now, Gift Card value is only taken off once the booking has been charged and not until then.
[👍] 72 hour reminders were only being sent to monthly clients. After getting a significant amount of feedback we are enabling these reminders for all bookings in the system.
[👍] Implemented prevention of some of the fields being cleared when a client updates a booking.
.new_pathare required on every redirect
Truewill add this redirect to the topbar and the field
.namemust be set.
.imagecannot be set without the redirect having
Truethen this redirect will display for all staff members.
[👍] No longer are we sending reminders to 'Archived' bookings.
[👍] No longer are we follow up communications to 'Archived' bookings.
[✨] Introduced the first real dashboard. Now everything that anyone is not a business owner, needs access to can find it on the website. There are no exceptions for something related to a scheduled process that is not on the website or in the Google Drive. This introduced new pages of:
Each of these pages also came with a table view and form view. Both to create an edit the respective Model object.
[✨] Dynamic landing pages that will automatically updated based on the slug parameters provided relating to a Service.
[✨] New user profile page so that all users can navigate much more efficiently.
[✨] Implemented calendar feature so that each user can see their respective bookings in calendar format. This is the same information found on the booking list however this form of display has been requested for a long time.
[✨] Automatic profile images with the help of Gravatar.
[✨] Dark mode in the dashboard.
[👍] Updating landing pages to have a more optimized flow. This includes things like removing page-bound links, removing outbound links, building social proof, etc...
[👍] Instead of hiding archived items we now display them at the bottom.
[👍] Updated tables of:
[👍] Fixed automated reminders and follow up messages.
[👍] Times ending in anything that was not '00' would not show properly. That is now fixed.
[👍] Extended the max length of staff_comments to infinite and we are now rendering the line breaks while writing said staff comments.
[👍] When the team member count of a booking has to be updated a staff member can now force finish the booking and the server will set the
.finished_at of the booking automatically.
[✨] Dynamic landing page for services with branch one, two and three.
/admin/and update the respective service. These landing pages are created at
[✨] Dynamic videos on the landing pages.
[👍] Updated the lead form to be dynamic depending on the landing page it is on.
[👍] Removed outbound links from landing page templates.
[👍] Disabled muting and autoplay on all embedded videos. Users now have to click on the video to play and it will automatically play with sound.
[🐛] When sending a booking receipt we were assuming that the existing location of that booking had a
.place_id in the database. This was causing an error and the location is not displayed if they do not have a
.place_id respective to Google My Business.
[✨] Implemented Leads.
[✨] Lead form now creates a lead in the database, creates an account for the client and redirects to the booking form.
[✨] Notification when a new lead is entered into the system.
[👍] Footer location information cleaned up to reflect our layout more appropriately.
[👍] Copyright year updated to 2020.
[👍] Uploaded optimized image of commercial cleaning service.
[👍] Contact page was updated to look much better.
[🐛] Contact form link to Facebook Messenger was not valid.
render_to_string import was missing.
[🐛] Reminders and Follow Up Messages were not being sent.
[👍] Only send the cancellation email when the booking is in the future or on the same day,
See Next to get to the following booking scheduled by the client.
[🐛] Could not process refunds due to a code error.
[🐛] Now setting
.refunded_at when a booking is refunded.
[🐛] Fixed horizontal line on booking page even when all of the green buttons were hidden.
[✨] Phone number on the booking page is now a clickable link.
[✨] Email on the booking page is now a clickable link.
[✨] Improved print messages for
clock.py scripts for an enhanced debug and quality experience.
[✨] Hid contact information of clients to anyone that is not a high level staff member or the client accessing their own pages.
[👍] Headline area of booking page has been updated to remove the client name and reformat the content.
[👍] Now displaying 'Sales Cut' and 'Subcontractor Cut' on the booking page to salesman.
Processing on the booking page.
[👍] Default settings for DEBUG and STAGING to
[👍] Booking cancellation emails are only sent when the booking is in the future or on the same day.
[👍] Only staff members and employee can see staff comments.
[👍] Grandfather expiration now is valid for the entire day of the expiration day. It is not truly expired until the day after the expiration date.
[🐛] Layout of sales rep on the booking page was not following the layout of the rest of the page. Has now been updated to be inline with the rest of the team members.
clock.py was not sending reminders due to failure of import.
clock.py was not sending follows up due to a missing import of
clock.py had a typo in the kwargs of the function with
[👍] '- - -' for empty mileage is no longer displayed.
.created_at of the booking in
.updated_at of the booking in
[✨] Schema.org now includes Blog and BlogPostings
[✨] Twitter share card information.
[👍] Social share image updated to better display the information.
[👍] Footer copy and layout.
[👍] Homepage copy and layout.
[👍] Location list page and location object page.
[👍] Disabled fingerprinting and migrated static files in AWS into seperate buckets with proper functionality and overwriting.
[🐛] Fixed broken links cause by links in blog posts not starting with 'http://' or 'https://'
[✨] 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 segmenting 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.
[🐛] 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.
Phone: (432) 355-3171
Office Hours: Mon. - Sat.: 8 am - 5 pm
Service Hours: Mon. - Sun.: 12 am - 12 pm