skip to content
anntz.com

FlashSwipe

Preview

source-code

Flashswipe: A hybrid mobile application for learning

Flashswipe is a hybrid mobile application developed as a coursework project for the “Software Development Methodologies” class. It combines the flexibility of React Native with the performance and safety of Rust to offer a cross-platform learning tool. This application is designed to facilitate memorization and study through the use of flashcards, utilizing a user-response based algorithm to optimize the learning process.

Application Scope

Flashswipe enables users to enhance their learning experience by providing several key functionalities:

  • Deck Creation: Users have the ability to create custom decks of flashcards, allowing for a personalized learning experience.
  • Swipe to Indicate Familiarity: Users interact with the app by swiping left or right on flashcards to indicate their level of familiarity with the content.
  • Algorithmic Scheduling: The application employs an algorithm to determine the scheduling of future reviews, tailored to the user’s performance and response history.
  • Offline Support: Flashswipe offers full functionality even without an internet connection, ensuring users can continue their study sessions uninterrupted.

Benefits

Flashswipe provides several advantages designed to support efficient learning:

  • Spaced Repetition: The application’s use of spaced repetition aids in improving long-term memory retention.
  • Customization: Users can tailor their study sessions by creating decks suited to their specific learning needs.
  • Ease of Use: The interface is designed for straightforward navigation, making studying more accessible.
  • Progress Tracking: Users can monitor their learning progress, providing insights into their development over time.
  • Device Synchronization: Progress and decks can be synced across devices, facilitating a flexible study experience.

Architecture

architecture diagram of flashswipe.

Running your local instance

Requirements

Make sure you have the following program installed on your dev system

Database Setup

We will be using docker containers to setup our PostgreSQL database.
You can use the command make init_db that will automatically:

  • create a container named flashswipe_db_container
  • setup a postgres server inside the container &
  • expose it to the default postgres port 5432

Running the Backend

You need to create a .env file inside the /backend/ directory with the keys defined inside the .env.sample
After setting up the .env file, you can run the application using: make run or cargo run

Migrations

If you want to update the database table, please follow the guidelines to add the migration sequence: SEQUENCENUMBER_DESCRIPTION.sql inside the /migrations directory

Technology Used

Frontend Web Stack
React Natvie
Expo
React Query
Typescript
Zustand
Tamagui
Reactotron
Backend Stack
Rust
Actix Web
Docker
Make
PostgreSQL
Code Analysis
Prettier
Eslint
Tools
Simulator
Postman
Draw.io
Figma