This is your new go-to app for retrieving, collecting, and curating events on the fly within an Android environment. RendezVenue simplifies the hassle of scouring event content with a targeted search functionality to get the events you want, where and when you need them.
Do you prefer working with Outlook, TimeTree, or maybe even simply Google Calendar? No problem, we’ve got you covered. Effortlessly synchronised to a local calendar app of your choosing, RendezVenue takes a holistic approach with full system integration.
Note
This repository, and any of the files contained within, is part of a larger project.
This Android application relies upon data and services provided to it by the RendezVenue API.
The RendezVenue API exists in a separate repository which you can find here.
RendezVenue boasts a slick UI experience, with automatic background location filtering kicking in from the get-go, granting instant access to events as far as the eye can see. Entrusting response caching and computationally-demanding processes to the backend keeps the user experience uninterrupted. The frontend team have worked hard on embellishing the visuals with snappy graphics, elegantly designed, laid out, and all carefully chosen to complement the overarching theme.
- User Flow
- Technologies/Features
- A Real Team Effort
- Security
- Future Considerations
- FAQs
- Bugs and Contributions
The application opens up to a carefully considered home page. The bottom menu bar acts as the main point of navigation within the app, with the top bar allowing users consistent access to their calendar throughout the app. The Home page features:
- A section to display two Events saved by the user
- A search bar, giving another point of access to the Explore page
- A selection of buttons, providing quick access to Event listings filtered by the category of event
The RendezVenue Home page
The application allows users to search for events with a range of filtering options. Once an event is found clicking it will open up a more detailed view, allowing a user to add it to their calendar with ease. Creating events is also a breeze with our fillable form, utilising text fields, dropdown menus and picker dialogs to make the process as easy as possible for the user and robust input sanitisation for our API. Once an event is created a pop-up is displayed, asking the user if they wish to also add the event to their own calendar.
Finding Events on RendezVenue Creating Events on RendezVenue
We used Jetpack Navigation for it's robustness, allowing us to give a fluid user experience when navigating between sections of the app. Use of a NavController allowed for smoother navigation between various layers with multiple points of entry. Implementing a NavGraph gave us complete oversight to sensibly structure our navigation paths. It also allowed us to visualise how our data was being passed between fragments, relying on the SafeArgs dependency for inter-fragment type-safe navigation.
We used Glide in our Android frontend to load and display images effectively. Once images are loaded, Glide also facilitates efficient image caching, allowing for a polished and stable user experience while browsing images.
When a user creates an event, we use Dialog boxes and Spinners to help ensure that Date, Time and category related fields were uniformly shaped to work with, not only the internal Calendar Provider API, but also our very own Spring Boot API backend. It is, in fact, through a combination of these dialog's, a helper class (affectionately called the Time Wizard) and the invocation of SafeArgs functions made available via the Jetpack Navigation libraries, that we have been able to format the Date and Time fields differently according to the different funtions.
We worked to a tight MVP, building from a clear concept to a multi-faceted, fully-functioning, and bespokely-crafted implementation. The idea for RendezVenue evolved from a desire to create a product from which all team members would benefit. This was about the group, not the individual; we wanted everyone to feel that the project was as much their own as it was anyone else's.
As the project progressed, it really began to take on a life of its own. With each member taking on a particular area of interest, it is within that defined scope of operations that they were afforded the time and space to carry out targeted research, and so incorporate new technologies thus enhancing their code. This approach not only helped to streamline team resources, but allowed us to build upon existing skillsets to qualify the project with a unique blend of functionalities.
We were acutely constrained for time, so we introduced agile methodologies early on. Regular stand-ups kept the group informed and aligned, and was the source point for ticket creation within a Kanban-style workflow. Starting from a group Excalidraw, we were able to assess operational and technical feasibilities, relating to risks and legal considerations. It was during this research stage that we were able to distil our project aims down to a discrete set of clear, concise, and testable user stories.
We took the time to structure our CI/CD pipeline appropriately with a standardised set of instructions serving as the common point of reference for all team members. This not only encouraged us to keep our local work states consistent but helped guard against misuse, ensuring that privileged branches were free of unstable, broken or poorly-tested code. We produced most of our work inside of feature branches. These provisional working directories do not track a remote branch. This goes back to our earlier point about guarding against accidental pollution of the parent branches.
Flowcharts
UI Prototypes
First Ideas
Preserving the Pipeline
All data relating to a user's location is AES-256 encrypted for secure transmission. Jenerics Software puts the utmost priority on preserving the confidentiality and integrity of sensitive user-sourced credentials.
For a more in-depth look at how RendezVenue manages end-to-end encryption, please visit our backend, which you can find here.
- Compatibility testing: pivoting from local to instrumented testing, assessing the application's performance across many devices and API levels.
- Expand on the application themes with custom animations between fragments and a broader revision of stylistic choices not adhering to guidelines on accessibility.
- Loading animation when awaiting a non-cached response to a new GET request, most importantly when a user changes location.
- Dynamic path handling on denial of permissions to access the user's location.
- Thorough sanitisation of user input to text fields.
- Push notifications to remind users of their upcoming events; presently a user can do this via their own calendar.
- GitHub Actions to automate end-of-pipeline testing and enforce rulesets on staging and production branches.
On which external APIs does RendezVenue depend?
Our ethos centres on limiting over-reliance on external APIs. We rely solely on Ticketmaster's Discovery API.
Where can I get RendezVenue?
This is a work in progress. Please be aware that some of the critical files, upon which this app is reliant for encrypting traffic, will not be made available with this release.
Is RendezVenue available in Kotlin?
Not presently. This project was foremost an exercise in developing a full-stack Android application in Java.
How long is a piece of string?
Great question. For an empty string, about 40 bytes, I believe.
If you find any bugs, please create an issue on the issues page of this repository.
As this project is exclusive to the team at Jenerics Software, we don't plan on accepting any external contributions at this time.






