stefanjaindl

Overview over my personal projects with Android, iOS, Web Development and Data Structures & Algorithms

projects

Card image cap
Travel Companion

Travel Companion is an iOS app I developed from 2018 - 2019 inspired by my passion for travelling, which is available on the Apple Store.

Travel Companion's goal is to let explore, plan and remember travels. It has an integrated sign-in mechanism with either Facebook, Google, Apple, or email. This allows data synchronization over all your different devices. Here's a short demo video of the app:


Within the app CoreData and Firebase Cloud Firestore are used for data persistence as well as various API's (Google Maps, Google Places, Google Geocoding API, Firebase Authentication, Firebase Storage, Firebase Analytics, Firebase Crashlytics, flickR API, Rome2Rio and restcountries.eu).

Explore: The explore feature offers a Google Map that allows to search for desired destinations. Basic information about the destination and country as well as photos about the country, place and geographical location can be retrieved. Information provided by Wikipedia, Wikivoyage, Google and LonelyPlanet about the destination are offered, too.

Plan: The plan feature allows to add travel plans for destinations that you have previously explored. The travel plans include flights, public transport (including ferries), hotels, restaurants and attractions.

Flight and public transport search allows to enter an origin and destination with autocompletion support and a travel date. Available transport opportunities with detailed information are displayed in a TableView and can be added to the trip.

Hotels, restaurants and attractions can be searched by destination: You can drop a pin on the map, which triggers a search for the chosen place type and distance. The search can further be restricted by text search. Attractions are subdivided in various groups offered by Google Places, that can be chosen in a picker (e.g. amusement parks, zoos, general points of interest, etc.).

The plan overview displays all flights, public transports, hotels, restaurants and attractions in a grouped TableView. By tapping an item it is possible to delete it or to add a note. Furthermore, an image from the linked explore photos can be chosen by tapping the placeholder image.

Finally, plans are subdivided into upcoming and past trips, depending on the travel date.

Remember: The remember feature displays past trips (or trips that have been started), where you can add photos from the gallery or camera to remember your trip.

Details can be checked on Travel Companion's homepage.

Of course, I'd be pleased about downloads and reviews on the App Store.

Card image cap
No One Left Behind - create@school

From 2011 to 2018 I've worked actively for the Open Source project "Catrobat", where I also have written my Software engineering Bachelor's thesis as well as Master's thesis at Graz University of Technology. Mainly I have worked on the Android app ("Pocket Code"), which is available on Google Play for Education, but also partly on the iOS versions and on the website (based on Symfony).

The vision of Catrobat is to develop solutions which inspire especially childs and teenagers to learn coding, get creative and be prepared for the digital world of our future. The founder of Catrobat, Prof. Wolfgang Slany, explains it here:


You can find out more about Catrobat here.

One of the coolest features I've implemented for Catrobat was the create@school project. It is a standalone Android app (actually a newly introduced gradle product flavor of "Pocket Code") which was especially targeted at educational environments. It was allowing 600+ children in five Austrian, Spanish and British schools to develop digital games on mobile devices linked to their school curriculum.

Technically I've introduced flavouring with gradle to "Pocket Code" with the create@school app, allowing additions such as complex template projects downloaded via Web Service.

You can find out more about this great project here.

Card image cap
HV TDP Stainz Website

In my spare time I love to play football. I'm actually actively playing at the hobby football club HV TDP Stainz, and I have created the club homepage https://www.hvtdpstainz.at.

It supports the following features/has the following pages:

  • Landing page with latest news and visitor count
  • News Page with accordion and pagination
  • Team and championship page
  • Photo gallery and video gallery pages
  • Donations pages
  • About us/Contact pages
  • Fanshop
  • Membership and document pages

The homepage is written in Typescript using the Angular framework. It uses a MySQL database, where communication is done via PHP. All pages are based on Angular material design.

Card image cap
Starting Eleven

A friend of me are passionate football players, and we play both at the hobby football club HV TDP Stainz. Out of that passion the idea of a comunio-like football manager website for hobby leagues was born.

I have created that Single Page Web App written in Angular called "Football Manager". We are using the website club-internally - and it makes much fun to have our own Football Manager :)

It supports the following features:

  • OAuth authentication flow via Facebook, Google and E-Mail
  • Possibility to create and join leagues
  • Transfer market to buy and sell players (values based on player performance/points)
  • Scoring system
  • Live table
  • Profile page
  • Admin Area for scoring and statistics

    The app uses Firebase Cloud Firestore as database and communication via REST API to the backend.

If you want to take a closer look or even start playing you can check out the website here.

Card image cap
Data Structures & Algorithms Collections

I had the pleasure to meet the famous Linus Torvalds, founder of Linux, at Google Summer of Code Reunion 2014 in San Jose, California. As he once said, "bad programmers worry about the code. Good programmers worry about data structures and their relationships."

I totally agree with him and that's why I have created a collection of data structures and algorithms. The package is written in Swift. It includes well-known data structures and algorithms such as Djikstra's shortest path algorithm, as well as algorithms for specific problems such as checking whether a string contains all unique characters. Each data structures and algorithm class also has a corresponding unit test with, if applicable, a link to test data/further decription.

The package is available on Swift Package Manager and the repository can be checked out on my github page: https://github.com/sjaindl/DataStructuresAlgs.

Besides various basic as well as advanced data structures, the package offers algorithms of the following areas:

  • Arrays & Strings
  • Linked Lists
  • Stacks & Queues
  • Trees & Graphs
  • Bit Manipulation
  • Recursion and Dynamic Programming
  • Sorting & Searching
  • Threading

Algorithms are based on the questions of the book "Cracking the Coding Interview" from Gayle Laakmann McDowell.

I also have an algorithms collection written in Phyton, that can be checked out here.

Card image cap
Route Planner

Route Planner is a lightweight Google Maps-like algorithm for finding the shortest path in a map. It is written in Python and based on A* search. I'll provide a short explanation of how the algorithm works, its runtime and space requirements.

It uses a heuristic function f, where f = g + h. g is the distance covered so far and h is the estimated distance to the goal. The calculations are based on the Euclidean distance.

The total cost is stored in a min priority queue, so the current element with the min cost can be stored and retrieved in log(V) time, each. When the min element is the goal, the goal check is successful. It returns the path, which is backtracked by links to predecessors. This requires just constant O(1) additional storage. In total, the algorithm requires O(V) additional space and O(E * V log V) time, where E are roads (edges) and V are intersections (vertices). A deeper analysis can be found in the comments of a_star_path_search.py.

The repository is publicly available on here.

Card image cap
Virtual Tourist

Virtual Tourist is an iOS app written in Swift, that allows users to virtually travel around the world, pinning locations, placing images and persisting their data in a local database.

The app uses CoreData for data persistance and the flickR API as a REST-endpoint to retrieve the images based on location.

The source code can be checked out here.

Card image cap
MemeMe

MemeMe is an iOS app written in Swift. It is a funny photo editor that allows users to create and share Memes with friends. Photos can be added either from an album or from the camera and customized with a top and a bottom text. The resulting Meme can then be shared or saved. It can also be reviewed later in a Meme overview (the overview can be switched between a TableView and a CollectionView) as well as in detail when tapping a Meme in the overview.

The source code can be checked out here.

Card image cap
PitchPerfect

PitchPerfect is a sound recording app for iOS written in Swift, that allows to record sounds and replay them like Darth Vader or a chipmunk (and 4 other funny voices). It has a screen to record audio, and one to replay and remix the record.

The source code can be checked out here.

Card image cap
OnTheMap

OnTheMap is an iOS app written in Swift. It allows users to search for a location using geocoding, retrieve locations of other users via Parse API and share their location and a custom link.

The source code can be checked out here.