Cansis is a modded Android client to check Announcements, Attendance, Marks, and other updates from college.
- One-time login 🔐
- Push notifications 🔔
- Forgot password? 🤔
- Performance tweaks 📱
- Dark mode 🕶
- Offline Persistance 🌎
Cansis uses a number of open source projects:
- Material - Google's Material UI
- shimmer-android - Loading animation
- Glide - Loading images
- Volley - Network requests
- GSON - JSON Serialization/Deserialization
- LoadingButtonAndroid - Fancy loading button
- CircleImageView - Circular ImageView
- commons-text - Apache Commons Text
- intentanimation - Animated intents
- AttributionPresenter - Attributions
- ZoomInImageView - Elastic Zoom
- VerticalStepperForm - Vertical Stepper
- android-otpview-pinview - OTP textfield
- lottie-android - Render After Effects animations natively
- ReactiveNetwork - Listening network connection state
- android-play-safetynet - reCAPTCHA
- Firebase - Firebase
- Sendgrid - Sendgrid
Cansis requires Android 5+ to run
- Every 5 minutes a python script runs on AWS Lambda which hits college's
Announcements
Endpoint, compares current JSON with the previous one which is stored in DynamoDB, if there is an new update Lambda calls Firebase Cloud Messaging to send push notifcation to clients
- After reCAPTCHA verification, OTP is generated, its stored in Firestore and mailed to verifed email in a HTML template through Twilio's Sendgrid, then input is compared with Firestore and validated
- Since the app is not published on Playstore, built a backup plan to force user to update to latest version or even entirely disable the app using Remote Config
Marks
andAttendace
can be fetched via API but it returns details of all previous semesters which almost took a minute on average, but the same data is available on college's website for a particular semester, which has better response time, so used web scraping (on device) to get these data from website