Agora Vote Android
Student - Mukul Kumar
- Project : https://gitlab.com/aossie/agora-android
- App Link : https://drive.google.com/open?id=1Z8OQ68SWLiDSOb7H86PGOVBeGqwq1Ieg
Agora Vote Android
The goal of this project is to develop an android application which uses Agora Web API so that we can scale up and reach more users.
Use case modeling
I have identified the following tasks/features in the project at the starting of the project:
- Splash Screen with animation - Done
- User signup and login with email base accounts - Done
- User login using social media account - Done
- Contact us throught the application - Done
- Report a bug through the application - Done
- Change password for email based accounts - Done
- Share with others - Done
- Logout from the application - Done
- Forgot Password - Done
- Create and schedule Election. - Done
- Dashboard - Done
- Profile - Done
- Display the details of elections - Done
- Delete the Election. - Done
- Invite the voters to vote for the Election. - Done
- Interface for voters to vote the Election. - Pending
- Interface for for election results - Done
Deep view into the technology.
Libraries used in this project are listed below:
- Retrofit-A type-safe HTTP client for Android and Java.
- Material Design For Android-Material design is a comprehensive guide for visual, motion, and interaction design across platforms and devices.
- Shimmer For Android-Shimmer is an Android library that provides an easy way to add a shimmer effect to any view in your Android app.
- gson-A Java serialization/deserialization library to convert Java Objects into JSON and back.
- Navigation Component- Android Jetpack's Navigation component helps you implement navigation, from simple button clicks to more complex patterns, such as app bars and the navigation drawer.
- Recycler View- To display a scrolling list of elements based on large data sets (or data that frequently changes).
- Card View- To create card views.
- Design support- The Android Support Library contains several library packages that can be included in your application. Each of these libraries supports a specific range of Android platform versions and set of features.
- Pie Chart- A powerful & easy to use chart library for Android.
- Facebook Login- To implement User login using social media account.
- Load Toast-Pretty material design toasts with feedback animations.
We started working on the project on time but I was a bit uncomfortable with the Agora Web API and this make me behind my timeline. We decided to go feature by feature and the first features that we implemented were login and signup with email baed accounts. We left the implementation of splash screen because it will slow down the process of debugging the application on real device.
After that we worked on specific action on by one, we created navigation drawer using jetpack's navigation commponent and displayed he number of elections on it. Then we worked on all the fragments assosiated with the Dashbpard which are "About agora", "Profile", "Report bug", "Contact us", "Share with others".
Then we worken on the most important feature of the application i.e., create election and then we worked on change password and forgot password. Then we moved forward to the manage the application state(login and logout). After fixing some bugs related to input validation and backward compatibility we worked on displaying the details of elections into 4 parts(Total elections, Active elections, Pending elections, Finished elections).
After that we implemented Splash screen, share with others feature facebook login and delete election. During the end of coding period we worked on invite voters, view ballot, view result, view voters and managed login session. Due to some time constraints one feature "Cast votes" is pending but still we can vote through the website using android devices(thanks to agora web). I would like to complete it as soon as possible and love to mentor students if given a chance in future.
I would like to thank every AOSSIE member, especially my mentors, Thuvarakan Tharmarajasingam, Abanda Ludovic, Prudhvi Reddy and Bruno Woltzenlogel Paleo for being so nice and helpful. I have learnt a lot in the past 3 months and it has been a great experience to be a part of this wonderful community. A special thanks to Prudhvi again because whenever I need help he was there every single time and mentored me, I learned a ton of things from Prudhvi and Abanda.
- Merge Request !1- Project Initialisation- status:-Merged
- Added Icon to the app.
- Created Main, Signup, Signin screens.
- Merge Request !2-Signup and Solved compatibility Issues- status:Merged
- Completed Signup using email base accounts
- Resolved backward compatibility issues
- Merge Request !3-Completed Login-status:Merged
- Implemented login feature and covered all the test cases possible.
- Merge Request !4-Completed Navigation Drawer and Home Activity-status:Merged
- Created Dashboard
- Implemnted "view profile"
- Implemented "Contact us" feature
- Implemented "Report a bug" feature
- Merge Request !5-Created activities for "Create Election Process"-status:Merged
- Created 4 activities for the "create election" process.
- Used Recycler View for adding candidate during the create election process, saved all the names into an arraylist of type string.
- Instead of creating a button we can swipe left/right to delete any candidate from the list.
- Used Date and Time picker to select the date and time to start or end any election, the user can open it by clicking on the calendar icon.
- Merge Request !6-Completed "Create Election Process" and "Change Password" feature-status:Merged
- Implemented Create Election process
- Implemented Change Password feature
- Merge Request !7- Implemented Forgot Password Feature-status:Merged
- Implemented forgot password
- Merge Request !8-Created Splash Screen, Implemented Logout and managed App state for login and logout- status:Merged
- Created Splash Screen which is having an animation of rotating agora icon which fades out after rotation.
- Managed app state: User will stay Logged In until he/she clicks on logout.
- Implemented a Logout feature.
- Merge Request !9-Fix "Unable to login due to blank spaces before or after the username or password"-status:Merged
- fix "user is not able to log in if he/she put blank spaces before of after username or password by mistake"
- Merge Request !10-Displayed number of elections and displayed complete info of elections categorized in Total, Active, Pending and Finished elections-status:Merged
- GET the election data and categorized that election data into Total, Active, Pending and Finished elections based on "Current Date", "Starting Date" and "Ending Date".
- Display the number of elections of each type on their corresponding card view on the home fragment.
- Created 4 activities viz, ActiveElectionsActivity, TotalElectionsActivity, PendingElectionsActivity,FinishedElectionsActivity
- Created a RecyclerView Adapter and an election item to which all the details will be displayed.
- Merge Request !11-Implemented "Facebook Login", "Share with others", "delete election", managed login session and updated UI for fragments-status:Merged
- Implemented Login Via Facebook: Users can log in directly using their facebook account.
- Implemented Share with others: User can share the link of application through any medium, the link will be active after publishing the app on play store.
- Implemented delete election: The user can click on any election and view more details about it and delete the election from the button provided below the details of the election.
- Managed login session: After the expiration of the token, whenever the application is opened we get a new token to continue the login session and the user does not have to log in again.
- Updated UI for report bug fragment to make it similar to other fragments.
- Merge Request !12-Implemented "View Results", "View Ballots", "Invite voters" and added documentation
- Added Documentations
- Now we can see the result of elections.
- Now we can see the Ballot of elections.
- Now we can invite voters
- After logging in if we press the back button we will exit the application(previously we go back to the login page).
- Added Load Toast for processes that take time in getting data/response from API.
Note: Screenshots and demo of every feature in included in Merge Requests