DotsTest - Create a little Record application and using Pinata for API

Related tags

Logging DotsTest
Overview

Technical Test

Create a little Record application and using Pinata for API. The project must be open with Xcode 13.2.1, if not the app can't build. I join a video of the application (if you can build this app)

The user can :

  • create a recording
  • listen to it
  • delete

Each a user finish a recording, the file is upload to Pinata. When the user delete a recording, the file is delete on Pinata and locally

Architecture

I use a MVVM archicure with DDD (Domain Driven Design).

And this will produce a flow chart:

graph LR
A[View] --> B[ViewModel] 
B --> C[Repository]
B --> A
C --> D[Network]
C --> E[Database]
C --> F[Audio]

(If you're not seeing the diagram, you can add this extension to see mermaid diagram)

My folder are split in :

|- Model
|- Component
|- Data
  |- Repository
  |- Services
|- Resources

The Component folder is split in Model to easily find View,Format or anything else related to a Model The Data folder is spit in Repository and Service. Respository is only used the ViewModel to get the right data. The Repository is the only place that know where the data came from. The Services contains all the logic about Network, Storage ,Audio ...

All Repository and Service have some protocol (easy to change implementation if we want)

I create a propertyWrapper to be able to use some dependency injection

UnitTests

Only Model, ViewModel and Repository classes can be test. All Repositoryand Service should be mock for test. Actually only RecordRepository has some tests

Localization

This app is not translate, but maybe use SwiftGen

Package

I use

  • http: (package develop my me for Aircall), It only use URLSession with Combine without any librarby , I update it to handle the multipart form
  • GRDB: for Sql database

Completion

This code is not ready for Production because it's missing:

  • unitTests: Repository and ViewModel are not fully tested
  • need a better UI
  • the app need to be translated
You might also like...
A lightweight Swift logger, uses `print` in development and `NSLog` in production. Support colourful and formatted output.
A lightweight Swift logger, uses `print` in development and `NSLog` in production. Support colourful and formatted output.

Loggerithm A lightweight Swift logger, uses print in Debug and NSLog in Production with colourful output. Why In Swift, we usually use print to log in

Elegant and extensive logging facility for OS X & iOS (includes database, Telnet and HTTP servers)

Overview XLFacility, which stands for Extensive Logging Facility, is an elegant and powerful logging facility for OS X & iOS. It was written from scra

Easy to use and lightweight logger for iOS, macOS, tvOS, watchOS and Linux in Swift.
Easy to use and lightweight logger for iOS, macOS, tvOS, watchOS and Linux in Swift.

Lighty Easy to use and lightweight logger for iOS, macOS, tvOS, watchOS and Linux in Swift. Screenshots Requirements Lighty Version Minimum iOS Target

A simple Swift package for measuring and reporting the time taken for operations

Duration A simple Swift package for measuring and reporting the time taken for operations. It is derived from a version for Playgrounds that I blogged

A fancy logger yet lightweight, and configurable. 🖨
A fancy logger yet lightweight, and configurable. 🖨

📣 📣 Important: Printer can only print console logs if you're running an app in the Simulator. If you're running in a real device it will not print a

In-App iOS Debugging Tool With Enhanced Logging, Networking Info, Crash reporting And More.
In-App iOS Debugging Tool With Enhanced Logging, Networking Info, Crash reporting And More.

The debugger tool for iOS developer. Display logs, network request, device informations, crash logs while using the app. Easy accessible with its bubble head button 🔘 . Easy to integrate in any apps, to handle development or testing apps easier. First version, there is plenty of room for improvement.

Logging utility for Swift and Objective C
Logging utility for Swift and Objective C

Swell - Swift Logging A logging utility for Swift and Objective C. ##Features Turn on logging during development, turn them off when building for the

Simple, lightweight and flexible debug logging framework written in Swift

AELog Simple, lightweight and flexible debug logging minion written in Swift If you find yourself in upcoming statements, then you probably want to us

Monitor and terminate/throttle CPU hogging processes in iOS

Vedette Monitor and terminate/throttle CPU hogging processes in iOS Vedette is a CPU usage monitoring tweak for processes in iOS like apps and daemons

Owner
budain
budain
📱💬🚦 TinyConsole is a micro-console that can help you log and display information inside an iOS application, where having a connection to a development computer is not possible.

TinyConsole TinyConsole is a tiny log console to display information while using your iOS app and written in Swift. Usage Wrap your Main ViewControlle

Devran Cosmo Uenal 2k Jan 3, 2023
This is how you can manage and share logs in iOS application.

Logging in Swift In this example, you can find how to print all the logs effciently in iOS application. Along with, you will find how to share logs fo

Nitin Aggarwal 8 Mar 1, 2022
BadgeLog - A light lib that helps and centralize logs in your application

BadgeLog BadgeLog is an iOS Swift library that helps you manage logs within your

Daniele 1 Feb 2, 2022
A Swift-based API for reading from & writing to the Apple System Log (more commonly known somewhat inaccurately as "the console")

CleanroomASL Notice: CleanroomASL is no longer supported The Apple System Log facility has been deprecated by Apple. As a result, we've deprecated Cle

Gilt Tech 62 Jan 29, 2022
A simple, straightforward logging API.

Sequoia A simple, straightforward logging API. Install Add the following to your Package.swift file: import PackageDescription let package = Package(

Jordan Baird 0 Dec 18, 2022
SecFit (Secure Fitness) is a hybrid mobile application for fitness logging.

SecFit SecFit (Secure Fitness) is a hybrid mobile application for fitness logging. Deploy with Docker Prerequisites: Docker Git Windows hosts must use

Erik Turøy Midtun 0 Oct 22, 2021
A pure Swift library for using ANSI codes. Basically makes command-line coloring and styling very easy!

Colors A pure Swift library for using ANSI codes. Basically makes command-line coloring and styling very easy! Note: Colors master requires Xcode 7.3

Chad Scira 27 Jun 3, 2021
A simple iOS app to simulate a laser level using built-in camera and gyroscope.

Laser Level A simple iOS app to simulate a laser level using built-in camera and gyroscope. Demo https://youtu.be/aB03EtQ5zsU Usage Download Open .xco

Pavel Trusov 2 Oct 30, 2022
TraceLog is a highly configurable, flexible, portable, and simple to use debug logging system for Swift and Objective-C applications running on Linux, macOS, iOS, watchOS, and tvOS.

Please star this github repository to stay up to date. TraceLog Introduction TraceLog is a highly configurable, flexible, portable, and simple to use

Tony Stone 52 Oct 28, 2022