Skip to content

wyattcheang/Notecraft

Repository files navigation

Notecraft

Swift Version Platform

📱 Screenshots

UI

✨ Features

  • Music Theory (Lesson, Quiz, Interactive Experience Features)
  • Basic Tools (Tuner, Metronome, Keyboard)
  • Music Score documentation
  • Any unique selling points

🔧 Requirements

  • iOS 18.0+
  • Xcode 14.0+
  • Swift 5.0+

📲 Installation

  1. Clone the repo
git clone https://github.com/username/project.git
  1. Open the .xcodeproj file in Xcode

  2. Build and run the project

Project Name

[Previous sections remain the same...]

🏗 Architecture

Frontend Stack

  • Swift 5.0+: Core programming language
  • SwiftUI: Modern declarative UI framework
  • UIKit: Traditional UI framework for custom components
  • Observation: For reactive programming and data flow
  • AVFoundation: For audio input, output and manipulation
  • Swift Package Manager: Dependency management

Backend Stack

  • Supabase

    • Real-time database
    • Authentication
    • Storage
  • FastAPI

Note: The FastAPI backend is currently in experimental phase. Run the repo in local host for the optical music recognition feature https://github.com/wyattcheang/notecraft_fastapi

Data Flow

  1. UI Layer (SwiftUI/UIKit) ↔️ View Models
  2. View Models ↔️ Services
  3. Services ↔️ Supabase/FastAPI
  4. FastAPI ↔️ Database

Key Design Patterns

  • MVVM: Main architecture pattern
  • Repository Pattern: For data access
  • Dependency Injection: For better testability
  • Observer Pattern: Using Combine for reactive updates
  • Factory Pattern: For creating complex objects

[Rest of the README remains the same...]

📚 Documentation

https://www.dropbox.com/scl/fi/qx3k41brvez6l5qwvg6ra/FYP_CHEANG-WAI-HOE_TP064280_APU3F2311CS.pdf?rlkey=swu20yv63z2o1xkpgy69b5s1q&st=ybt3wrib&dl=0

🎥 Demo

https://www.dropbox.com/scl/fi/sf8n4a6rc23pkll9xijmk/Notecraft_demo_video.mp4?rlkey=krebygpqpoc8okqnvue6zw5dl&st=rrm4pj8s&dl=0

🤝 Contributing

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

👥 Authors

📞 Support

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages