BookingSync is more than a vacation rental solution for hosts and agencies, it is a platform for hundreds of applications and developers. We need a strong engineer to take on the challenges of developing the tools, patterns and platform to provide the best APIs and developer experience for our partners.
This job isn’t just about building and releasing APIs for our partners to use. It is about creating the best experience possible for both internal and external developers on the platform. You will create an internal platform that helps the other BookingSync development teams provide useful, consistent and well tested APIs in a timely manner. The ideal candidate is passionate about solving tough problems with performant code, developer experiences and providing tools to developers. Our platform currently supports over 200 developers and hundreds of private integrations, and we're growing fast.
You'll need to have:
- Experience with web development, using and developing APIs and building scalable solutions
- Experience with Ruby On Rails
- Ability to communicate effectively with both internal and external development teams
- Proficiency with UNIX commands
- Experience with relational databases and SQL (we’re on Postgres)
- Experience building and scaling user-focused web applications
- A strong commitment to quality
- Excellent written and spoken English
- Strong writing skills and experience writing and contributing to API documentation
- Passion for API development and creating a great experience for developers
- Contributions to open source software
- Experience building tools for developers
- Care for the greater good, BookingSync is not just a software company, we will give back to humanitarian, solidarity, environmental & ecological causes from 10% to 50% of our profit.
It'd be great if you have experience with:
- System administration and security
- Contributing to our community through code, documentation, mentoring, teaching, speaking, or organizing
- Short terms rentals or travel industry
You'll be working on things like:
- Writing back-end code in Ruby, Rails
- Collaborating with other designers and developers
- Providing beautiful and fast code that improves our code base in meaningful ways
- Using TDD to write well-tested code
- Fixing bugs fast and taking your time to solve hard problems well
- Developing the infrastructure required to allow other development teams to easily build and deliver consistent, well tested and documented APIs to our partners
- Working on internal Apps and in collaboration with third party developers to determine the gaps in our APIs and developer tools and work to fill those gaps
- Helping to grow the engineering team necessary to support the API now and for future growth
- Standardizing API development end to end with consistent documentation, endpoints, responses, development tooling etc.
- Creating tooling to increase the developers and platforms that the API can be used with while maintaining a codebase that is easy to understand and extend
- Implementing new features and APIs for use by mobile and web clients
- Improve the reliability and efficiency of our backend stack
- Contributing back to the open source community
- Learning and growing constantly
Here's how to apply:
Sounds interesting? If yes, please send a short email to firstname.lastname@example.org telling us about yourself, why do you think you are the best candidate for this role and attach a résumé. Want to increase your chances of standing out? Include your open source contributions, blog posts and other publications you wrote, links to conference talks. You could even tell us about one thing or two you created that you are particularly proud of or the most challenging features you’ve worked on.
Before the interview we would like you to build a project which might be somewhat similar to your everyday work at BookingSync. The project should consist of two applications:
Generate a new Rails application and build REST JSON API with 2 endpoints: Rentals and Bookings with full CRUD. Rental is something that you can book for a particular period of time (like a vacation villa or a hotel) and Booking is a reservation for given Rental for a particular period of time.
The API should be authenticatable by a token (can be one global hardcoded token, no need for refresh token, expiring tokens etc. this time, keep this part simple).
Rentals should have
daily_rate attribute and should have many bookings. Bookings should have
end_at datetime attributes which indicate the time period of the reservation,
client_email attribute, just to know for whom it is supposed to be and
price attribute, which will be the price for this booking.
Price calculation for the booking should be simple: only
daily_rate should be considered when calculating the price. If the rental's daily price is equal to 100, the booking's price for 3 days should be equal to 300, for 5 days it should be 500 etc.
All attributes for both Rentals and Bookings should be required. Make sure that:
- the dates for bookings don't overlap
- the price for given period is valid when creating a booking
- the reservation should be possible for at least one night / day stay
Mini-BookingSync API Client
Generate another Rails application that would serve as a client of the Mini-BookingSync API. This application should be able to handle all CRUD actions for both Rentals and Bookings endpoints. The essential part of the application would be creating bookings for given rental - a user should be able to pick start at and end at dates, fill in client email, see the price for given period of time and create a booking.
Treat this assignment it as if you were building a real-world application. If you think some extra validations or requirements would make sense from the domain perspective, feel free to add some extra things.
Don't forget to include a GitHub repository URL(s) in your email. Good luck and see you at interview!