Bdc is an app created to take the attendance of a group of friends who meet on daily basis in a common place.
This app was created as a solution to replace traditional methods like Excel files, time sheets, or similar tools for managing attendance. It is designed for a single administrator to track attendance for all users and share the data via PDF, with options to filter by time frame.
The app features a dedicated section for detailed attendance statistics, offering insights on both individual and group data.
Over time, many specific features have been added, many of which are still in the works, such as attendance difficulties, confetti to celebrate 100% attendance in a given period and the inability to register attendance on holidays.
I created this project for personal use and not for commercial distribution so many features have not been created in the best way possible but only with the purpose of being functional to my needs.
The app is divided in four main section:
It's the view displayed when the app starts and it's used to take attendances or to view the attendees of a past day.
The calendar is displayed weekly by default but with a scroll it can become monthly. Clicking on a specific person's card makes them present for that day in that specific slot (morning or afternoon) while the long press gives them a warning (system created to avoid unfulfilled reservations).
At the bottom of the collection view, a counter displays the number of people present and those admonished.
The primary purpose of this section is to display the number of appearances made during a specific period. By default, the display shows weekly data, which can be navigated using horizontal scrolling to move between weeks. Clicking on a person's name opens a modal with their individual statistics (Statistics for details), while clicking elsewhere on the cell expands it to reveal detailed information about the specific days of the week when attendance or warnings were recorded.
The user, using the two button on the top left, can change the time period (week, month, year or all-time) and the slot (morning, evening or both) used to calculate the number of attendances.
After the user has chosen the time frame and the slot he is interested in, he can share attendance in pdf. The app will automatically generate a file indicating the filters chosen and the number of appearances and warnings for each user.
The Statistics section of the app provides detailed insights into attendance data, catering to both group-level and individual-level analysis. While both modes share the same view controller for a consistent user experience, each mode includes sections tailored to its specific focus.
- Group Statistics: Accessible via an item in the tab bar, this mode provides an overview of attendance data for the entire group. It offers aggregated insights and trends that help identify patterns across all users.
- Individual Statistics: To view the statistics of a specific person, navigate to the Ranking tab and click on their name. This action opens the individual statistics view, which highlights the attendance history and trends of the selected person.
The settings allow the user to customize different things around all the app such as: avoid modification old days, show percentage of attendance in chosen time frame, show/hidden confetti it a person complete a perfect period (100 % attendance) and the possibility of multiplying the all-time attendance by a difficulty coefficient based on the distance between the chosen location and the person's residence.
As you can see, the people list is dynamic and people can be added / removed at any time.
In the settings it's possible to see all the amazing open-source projects (❤️) that helped the creation of this app.
The app is fully developed in Swift (UIKit), it doesn't have any networking and all the attendance are saved using CoreData. All the design is made entirely by me using Figma.
I use this Trello board to keep track of bugs and
nice things to implement, take a look if you want. Suggestions and constructive criticisms are always welcome so feel to leave a comment!
iOS Deployment Target | Xcode Version | Swift Language Version |
---|---|---|
17.0 | 16.0 | Swift 5 |
- Install CocoaPods.
- Go to the project directory in terminal and execute
pod install
.
- Open
Bdc.xcworkspace
with Xcode. - In Xcode navigate to the Signing & Capabilities panel of the project editor.
- Change
Team
to your team. - Change
Bundle identifier
to something unique.
- In Xcode use the Scheme menu to select the Bdc scheme.
- Run the app.
This project is licensed under the terms of the MIT license.