Android app with a simple NFC payment system to manage visitor consumption at short-duration events and festivals. (Research project)

Overview

Clevent

Também disponível em Português

Clevent is an Android application developed for a Undergraduate Research that uses NFC technology to create a payment system that stores credits in NFC tags to manage visitor consumption at short-duration events and festivals. This project was presented at the 28th edition of SIICUSP (University of São Paulo's International Symposium of Undergraduate Research) in November 2020.

The application stores credits information and items consumed by the user in the NFC tags, thus being able to carry out operations such as balance recharging, issuing receipts and purchasing products entirely offline, without the need of a constant connection with a online server.

Screenshots

Application development

The application was developed using modern Android development techniques, including:

  • Kotlin programming language.
  • MVVM architecture.
  • Architecture Components (Lifecycle, LiveData, ViewModel, Room).
  • Single Activity Architecture with Navigation Component and Fragments.
  • Unit tests with JUnit and Mockito.
  • Hilt.
  • Retrofit.
  • Data Binding.

Data serialization

NFC tags have an internal memory with restricted space, so it is necessary to optimize how it's used to store the data, keeping it possible to recover them without any loss.

The serialization generates a byte array that can be divided into three segments:

  • Segment 1 (2 bytes): CRC checksum.
  • Segment 2 (4 bytes): Credits as an integer value.
  • Segment 3 (3 bytes per item): Each item uses 3 bytes, 2 bytes for item ID (short) and 1 byte for amount. An item can be divided and use more than 3 bytes if it has an amount greater than 1 byte is capable to store.

The byte array resulting from serialization is encrypted (in development) and stored in the NFC tag in the NDEF format.

SIICUSP abstract

The abstract published in SIICUSP is available in English and Portuguese and can be downloaded together with this repository or here.

You might also like...
Taskify - An app to manage your daily tasks and boost your productivity. Taskify is built using kotlin and follows all modern android Development practices and hence is a good learning resource for beginners
Taskify - An app to manage your daily tasks and boost your productivity. Taskify is built using kotlin and follows all modern android Development practices and hence is a good learning resource for beginners

Taskify Taskify is an app to manage your daily tasks and boost your productivity Video Introduction 📹 This is a small introduction video about Taskif

The App Store for the BlazeOS operating system project.

By: Seanpm2001, Et; Al. Top README.md Read this article in a different language Sorted by: A-Z Sorting options unavailable ( af Afrikaans Afrikaans |

Demo app demonstrating how to create and manage notifications locally using a combination of Jetpacks Worker Manager and Broadcast Receiver.
Demo app demonstrating how to create and manage notifications locally using a combination of Jetpacks Worker Manager and Broadcast Receiver.

Worker Notification Demo app demonstrating how to create and manage notifications locally using a combination of Jetpacks Worker Manager and Broadcast

An android application where you can manage and install all versions of the spotify app.

An android application where you can manage and install all versions of the spotify app.

MyTraining - Application project for Android system using Kotlin
MyTraining - Application project for Android system using Kotlin

MyTraining Projeto de aplicação para sistema Android utilizando linguagem Kotlin

Source code of JekyllEx Android App which can manage your Jekyll blog directly from your Android device!
Source code of JekyllEx Android App which can manage your Jekyll blog directly from your Android device!

JekyllEx Android App Built with ❤︎ by Gourav Khunger 🚀 Introduction JekyllEx is an Android App that allows you to manage a Jekyll Blog directly from

A third party app for android to manage your kindle.

Kindot - A third party app for android to manage your kindle.

AccountMe - An app for college student to manage transcations
AccountMe - An app for college student to manage transcations

AccountMe The app “AccountMe” which we have made was made by keeping in mind the

An application to manage SSH and GPG keys on GitHub written in Kotlin.
An application to manage SSH and GPG keys on GitHub written in Kotlin.

KeyManager An application to manage SSH and GPG keys on GitHub written in Kotlin. Thanks to FreePik for the app icon. Screenshots Building You will ne

Owner
Newton Scavazzini
Newton Scavazzini
AVTS App - S.I.T Global PBL 2021 - Automatic Visitor Tracking System Android Application

S.I.T Global PBL 2021 - Automatic Visitor Tracking System Android Application De

null 0 Feb 13, 2022
An android app make a one-stop solution for finding the desired reading or research partner, sell their own products, and also be a tutor

The purpose of this project is to make a one-stop solution for finding the desired reading or research partner, sell their own products, and also be a tutor.

Md.Asraful Islam Asif 4 Dec 14, 2022
An Android App meant to use NFC technology to communicate with and emulate RFID tags

An Android App meant to use NFC technology to communicate with and emulate RFID tags. Built by Niklaas Cotta & Jordan Whiteley, for CIS 433 WI22.

Niklaas Cotta 0 Jan 29, 2022
Application: SLA report This application calculates, based on an input, the average duration per service of Axon.

Application: SLA report This application calculates, based on an input, the average duration per service of Axon.

null 3 Aug 5, 2022
Bitcoin Wallet - a standalone Bitcoin payment app for your Android device

Bitcoin Wallet app for your Android device. Standalone Bitcoin node, no centralized backend required Google Colab

DE MINING 0 Feb 25, 2022
Wasanii a simple events app that focuses on arts and culture

This a simple events app that focuses on arts and culture. Due to my interest in the arts, I decided to create an app that would help people to find events and venues around the city(Nairobi).

malcolm maima 6 May 26, 2022
Simple sample app for sport events.

Kaizen Sports Simple sample app for sport events. Features Uses fake REST API to load data. Expandable list of events for each sport. Live countdown t

Yasan 4 Oct 7, 2022
A simple calendar with events, customizable widgets and no ads.

Simple Calendar A simple calendar with events and a customizable widget. A simple calendar with optional CalDAV synchronization. You can easily create

Simple Mobile Tools 3k Jan 3, 2023
GitHub application fetches events, repositories and profile using GitHub APIs

GitHub application using GitHub REST API Dagger MVVM architecture Mockk Jetpack Compose Kotlin Coroutines Application pages Attention If you want to u

Marjan DavoodiNejad 6 Oct 17, 2022
Techbee e.U. 62 Jan 31, 2023