Skip to content

ncs-jss/Mario-App

Repository files navigation

Frame 1000002619 Mario : Everything NCS

Repository License Android Kotlin Reactive

Mario is your gateway to Nibble, the place where dedication meets opportunity. Designed for members and aspiring recruits, Mario tracks your participation, scores your engagement, and brings you closer to exclusive perks and invite-only recruitment. Level up through active involvement, attend events, and grow your score to unlock special rewards and experiences within the Nibble community.

Group 6611


Table of Contents

Technologies

  • Android SDK
  • Kotlin Coroutine for Asynchronous tasks
  • Workmanager Api
  • AndroidX Jetpack for navigation
  • Dagger/Hilt for dependency injection
  • Retrofit/OkHttp/Gson for networking
  • MVVM as architectural pattern
  • SQLite/Room for local data storage
  • Firebase Firestore, MongoDB as Cloud Databases
  • Firebase storage, dynamic links

Key Features

Frame 1000002619



  • Exclusive Invite-Only Recruitment : With Mario, Nibble is now invite-only, bringing top talent together. Track your score, level up, and earn an exclusive invite to join our prestigious community.

  • Real-Time Score Tracking : Stay motivated by tracking your score as it grows with each event you attend and every contribution you make. Reach new levels and unlock more privileges as you progress!

  • Levels and Perks : Mario’s score levels unlock a world of rewards: Noobie: Entry-level event access, Intermediate: Recruitment eligibility and priority invites, Pro: Full access to exclusive sessions, personalized recognition, and even more perks.

  • Effortless Event Registration : Explore upcoming events, register easily, and stay engaged. Mario keeps you connected to all things Nibble in one convenient app.

  • Stay Updated with Notifications : Never miss an event, score update, or special announcement. Mario’s notifications ensure you’re always in the loop.

Sections

1. Home Page

The Home Page of the Mario app serves as a dynamic hub, delivering the latest updates, events, and social interactions from NCS. It seamlessly integrates banners, event announcements, and engaging posts from NCS social channels, ensuring users stay informed and connected. Posts include rich media content such as images with captions and interactive user polls, fostering engagement within the community.

Highlights:

  1. Banners & Announcements – Key updates and promotions.
  2. Events – Upcoming and ongoing NCS events.
  3. Social Channel Posts – Aggregated content from NCS social media.
  4. Image Posts with Captions – Visual updates from the community.
  5. Interactive Polls – Engaging polls for user participation.


2. Bonus Rewards

Users can unlock limited bonus rewards in the Mario app by either scanning a QR code or clicking a special reward link. These rewards grant Mario Coins and Mario Score, which can be used to redeem exclusive NCS merchandise from the Nerd Store.

How It Works:

  1. Scan QR Code or Click Link – Instantly access a surprise reward.
  2. Scratch Card Feature – Reveal your bonus Mario Coins and Score.
  3. Use Rewards – Redeem NCS merch using collected Mario Coins.


3. Events Page

The Events Page in the Mario app provides a centralized space to explore all upcoming and past events. Users can easily browse event details, access their entry tickets, and join online events seamlessly. Whether attending in person or virtually, the page ensures a smooth experience with quick access to essential event information.

Highlights:

  1. All Events & Past Events – View upcoming and previous events in a structured format.
  2. View More Option – Load additional events for better discovery.
  3. Entry Ticket QR Code – Easily access QR-based entry tickets for in-person events.
  4. Online Event Links – Quick access to virtual event participation.


4. Score Page

The Score Page in the Mario app provides a detailed overview of a user's progress, achievements, and event participation. It displays the user's Mario Score, Mario Coins, and current level based on their total score. Users can also track their attended and past events, along with the rewards earned from each event in terms of score and coins.

Highlights:

  1. Mario Score & Coins – Track total accumulated points and coins.
  2. User Level
    • Noobie – Score less than 100
    • Intermediate – Score between 100 and 399
    • Pro – Score 400 and above
  3. Event Participation – View attended and past events.
  4. Event Rewards – Check the score and coins earned from each event.


5. Nerd Store

The Nerd Store in the Mario app is the ultimate destination for users to redeem NCS merchandise using their hard-earned Mario Coins. From exclusive apparel to collectibles, users can browse and claim exciting rewards directly from the store.

Highlights:

  1. Exclusive NCS Merchandise – Explore a variety of items available for redemption.
  2. Mario Coin Redemption – Use Mario Coins to claim merch instead of cash.
  3. Seamless Redemption Process – Easily redeem items and track your orders.


6. Transactions

The Transactions Page in the Mario app provides a detailed log of all Mario Coin activities, allowing users to track where their coins were earned and spent. This ensures transparency and helps users manage their rewards effectively.

Highlights:

  1. Earning History – Track where Mario Coins were received:
    • Bonus Rewards – Redeemed via QR code or link.
    • Event Participation – Earned from attending events.
    • Gifts from NCS Members – Coins received as special rewards.
  2. Spending History – View how Mario Coins were used:
    • Nerd Store Purchases – Redeemed for NCS merchandise.
    • Other Redemptions – Any additional reward claims.


7. My Redemptions

The My Redemptions page allows users to track their Mario Coin redemptions from both the NCS Store and Nerd Store. It provides real-time updates on the status of each redemption, ensuring users stay informed about their claimed rewards.

Highlights:

  1. Redemption History – View all past and current redemptions.
  2. Stores – Track redemptions from:
    • NCS Store – Special event-based or exclusive rewards.
    • Nerd Store – Merchandise purchased using Mario Coins.
  3. Redemption Status – Stay updated with the progress:
    • Pending – Request is being processed.
    • Accepted – Approved and moving forward.
    • Fulfilled – Successfully delivered or completed.
    • Cancelled – Redemption request was revoked.


8. Settings

The Settings Page in the Mario app provides users with essential controls and customization options for a personalized experience. From editing their profile to managing notifications and exploring the latest app updates, users can access everything they need in one place.

Highlights:

  1. Edit Profile – Update personal details, avatar, and preferences.
  2. Feedback Mechanism – Share suggestions or report issues directly.
  3. More NCS Apps – Explore other NCS apps available on the Play Store.
  4. What’s New in Mario App – View app version history and latest updates.
  5. Notification Control – Manage push notifications and alerts.


9. Event Details

The Event Details Page provides an expanded view of each event, offering all the necessary information for users to make informed decisions before enrolling. From event timing to prerequisites, users can access comprehensive details in one place.

Highlights:

  1. Timestamps – View event date, start time, and duration.
  2. Moderators – See the list of event organizers or hosts.
  3. Prerequisites – Check any requirements before enrolling.
  4. Enroll Option – Easily register for the event with a single tap.


10. Event Register

The Event Register Page streamlines the enrollment process by collecting brief survey responses and ensuring users receive the necessary access details based on the event type.

Highlights:

  1. Brief Survey – Users answer a few questions related to the event.
  2. Enrollment Confirmation – Successfully enroll in the event after survey completion.
  3. Access Details:
    • Offline Events – A unique Entry QR Code is generated for check-in.
    • Online Events – The event link is sent to the user’s email.


MAD Score

summary kotlin

Module/Package structure

  • Model classes should be located in a model package.
  • Network related classes and interfaces (e.g. networking api's) are located in a remote package.
  • Local storage related classes (e.g. databases or dao's) are located in a local package.
  • Classes that do not correspond to a certain feature, should either be located in an all package, an util package or at the top level of the module.

These rules can be applied to either whole modules or packages depending on if you have feature modules or feature packages. An example for such a module/package structure can be found here.

Installation

To get started with Mario App, follow these steps:

  1. Clone the repository: git clone https://github.com/ncs-jss/Mario-App
  2. Open the project in Android Studio.
  3. Build and run the app on an Android device or emulator.

Note:

  1. Host your own Mario backend or get the API URLs from backend devs and add those URLs in the local.properties file.
  2. Create your Firebase project and add the google-services.json file to the root directory to get started.
  3. Add the Base API URLs for debug and release servers in the remote config with keys DEBUG_BASE_URL, RELEASE_BASE_URL
  4. Find the sample local.properties file below:
DEBUG_API_BASE_URL=
RELEASE_API_BASE_URL=

AUTH_ENDPOINT=
PROFILE_ENDPOINT=
EVENT_ENDPOINT=
QR_ENDPOINT=
MERCH_ENDPOINT=
POST_ENDPOINT=
BANNER_ENDPOINT=
REPORTS_ENDPOINT=

CLOUDINARY_CLOUD_NAME=
CLOUDINARY_API_KEY=
CLOUDINARY_API_SECRET=

Other

Dependencies

All dependencies are located in the Libs.kt file in the buildSrc folder. To implement them use implementation Libs.XXX.

Checking whether dependencies are ready to be updated, use ./gradlew refreshVersions. Afterwards the newer version is added as comments to the versions.properties file.

Testing

Every module should contain tests for its use cases:

  • test: Write unit tests for every ViewModel or Service/Repository. Mockito or PowerMock can be used to mock objects and verify correct behaviour.
  • androidTest: Write UI tests for common actions in your app. Use JUnit 4 Tests with Espresso. Some helper methods are available in EspressoUtils.

The dependencies for testing are located in the gradle/test-dependencies-android.gradle and gradle/test-dependencies.gradle files. If your module already implements gradle/library-module-android.gradle or gradle/library-module.gradle, then these dependencies are automatically added to the module.

If your module does not implement these standard library gradle files, add the test dependencies with:

apply from: rootProject.file("gradle/XXX.gradle")

ktlint

ktlint is a Kotlin linter and formatter. Using it is required to keep the code base clean and readable.

Use ./gradlew ktlintCheck to lint your code.

To conform to the rules either:

  • configure AndroidStudio accordingly.
  • use ./gradlew ktlintApplyToIdea to overwrite IDE style files. Read more here.

Resource Naming Conventions

The goal of these conventions is to reduce the effort needed to read and understand code and also enable reviews to focus on more important issues than arguing over syntax.

Bold rules should be applied. Italic rules are optional.

Component Rule Example
Layouts <what>_<where>.xml activity_main.xml, item_detail.xml
Sub-Layouts <what>_<where>_<description>.xml activity_main_appbar.xml
Strings <where>_<what>_<description> detail_tv_location
Drawables <what>_<where>_<description> btn_detail_background, card_overview_background
Icons ic_<description>_<where>.xml ic_close.xml, ic_location_pin_detail.xml
Dimensions <where>_<what>_<description>_<size> margin, detail_height_card, textsize_small
Styles <What>.<Description> Text.Bold, Ratingbar.Preview
Component Ids <what><Description> btnOpen, tvTitle

Recommended Reading

Contributors

Mohit Singh
Mohit Singh
Sankalp Saxena
Sankalp Saxena
Armax | Alok
Armax | Alok

License

Copyright 2025 Hackncs

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

About

Repository for NCS Mario

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages