/Rethread

An eco-friendly clothing e-commerce mobile app designed for iOS devices

Primary LanguageSwiftMIT LicenseMIT

♻️ ReThread

Continuous Integration GitHub repo size Github tag GitHub contributors Github pull requests Github license

📖 Table of Contents

📝 Contributors

👨‍💻 Tech Stack

  • Frontend

    Swift SwiftUI Figma Xcode

  • Backend

    Typescript Express Node.js Prisma MySQL Zod

  • Cloud

    PlanetScale

🚀 Backend Documentation

All the code is located in the backend/src directory. The backend is written using Node.js and Express.

🏃 Quick start

  1. Open the terminal and clone this repository using HTTPS or SSH (The example below uses SSH).
git clone git@github.com:techstartucalgary/fashion.git
  1. cd into the fashion directory.
cd fashion
  1. cd into the backend directory.
cd backend

🛠️ Installation

  1. Make sure you have Node.js and NPM installed on your machine. Click here to download and install Node.js. Make sure you install the LTS version. NPM is installed automatically when you install Node.js.

  2. Open the terminal and run node -v to check if Node.js is installed.

node -v
  1. In the same terminal run npm -v to check if npm is installed.
npm -v
  1. If you see the version number of Node.js and npm then you are good to go. If not, then try to reinstall Node.js.

  2. Make sure you have Docker Desktop installed on your machine. Click here to download and install Docker Desktop. Make sure you install the latest version.

  3. Make sure you have Git installed on your machine. Click here to download and install Git. Make sure you install the latest version.

  4. Open the terminal and run git -v to check if Git is installed.

git -v
  1. If you see the version number of Git then you are good to go. If not, then try to reinstall Git.

🧪 Testing

All the tests are located in the backend/test directory. The tests suites are written using Mocha and Chai.

  1. Open the terminal and clone this repository using HTTPS or SSH (The example below uses SSH).
git clone git@github.com:techstartucalgary/fashion.git
  1. cd into the backend directory.
cd backend
  1. Run npm install to install all the dependencies.
npm install
  1. Run npm run test to start the server.
npm run test

🚧 Development Environment

  1. Open the terminal and clone this repository using HTTPS or SSH (The example below uses SSH).
git clone git@github.com:techstartucalgary/fashion.git
  1. cd into the fashion directory.
cd fashion
  1. cd into the backend directory.
cd backend
  1. Run npm install to install all the dependencies.
npm install
  1. Run npx prisma init to initialize the database.
npx prisma init
  1. Update your prisma/schema.prisma file within the backend folder to use the mysql provider and set the relation mode type to prisma.
datasource db {
  provider     = "mysql"
  url          = env("DATABASE_URL")
  relationMode = "prisma"
}
  1. Once you are ready to push your schema to PlanetScale, run prisma db push against your PlanetScale database to update the schema in your database.
npx prisma db push

🌟 Frontend Documentation

The frontend is crafted for iOS platforms, utilizing Swift and SwiftUI. The code is primarily housed in the Rethread directory. This section details the setup, development practices, and testing for the frontend environment.

🏃 Quickstart

  1. Clone the Repository:

    git clone git@github.com:techstartucalgary/fashion.git
  2. Navigate to the Frontend Directory:

    cd Rethread
  3. Open the Project in Xcode: Open the project file .xcodeproj in Xcode.

  4. Run the Application: Select an iOS simulator or connected device in Xcode and click 'Run'.

🛠️ Setup and Installation

  1. Install Xcode: Ensure you have Xcode installed on your macOS, available through the Mac App Store.

  2. Update Swift and SwiftUI: Ensure you have the latest version of Swift and SwiftUI installed, as they are crucial for frontend development.

  3. Verify the Installation: Open Xcode and check for Swift and SwiftUI updates in the preferences.

  4. Minimum iOS Version: This app is built for iOS 16 and above.

Dependencies and Packages

  • swiftui-introspect: We use the swiftui-introspect package for advanced introspection of SwiftUI views.

  • swiftui-navigation-transitions: The swiftui-navigation-transitions package is used to add custom transitions to your SwiftUI navigation.

  • AVKit: We utilize AVKit for video processing within the app.

🧪 Testing

  • Unit Testing: Write unit tests for individual components using XCTest.

  • UI Testing: Automate UI tests to simulate user interaction with the app.

📱 Building and Deployment

  • Build for Testing: Use Xcode to build the app for testing on simulators or real devices.

  • Deployment: Prepare the app for deployment to the App Store, internal distribution, or TestFlight.

📚 Additional Resources