Skip to content

O aplicativo tem como objetivo apoiar o bem-estar pessoal e a produtividade dos usuários. Oferece ferramentas intuitivas, como desafios diários para hábitos saudáveis, gestão de tarefas para organização e um player de meditação com faixas relaxantes

Notifications You must be signed in to change notification settings

MelloBirkan/EvenBetter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EvenBetter

Swift Version SwiftUI SwiftData iOS Platform

EvenBetter é um aplicativo de iOS que oferece suporte ao usuário em sua jornada de bem-estar pessoal e produtividade, através de um conjunto de ferramentas intuitivas e acessíveis.

Índice

Demonstração

Aqui estão alguns screenshots e GIFs do aplicativo em ação:

video-desafios-demo video-tarefas-demo video-meditacao-demo video-demo

App Demo

Instalação

Para configurar o projeto localmente, siga os passos abaixo:

  1. Clone o repositório:
    git clone https://github.com/usuario/evenbetter.git
    cd evenbetter
    open evenbetter.xcodeproj
    Cmd + R

    Uso

Para utilizar o aplicativo, siga os passos abaixo:

  1. Abra o aplicativo.
  2. Navegue até a tela principal.
  3. Siga as instruções na tela para utilizar as funcionalidades.

Funcionalidades

video-demo

  • Gestão de Tarefas: Adicione, edite e exclua tarefas.
  • Desafios Diários: Complete desafios diários para um estilo de vida saudável.
  • Player para Meditação: Ouça faixas relaxantes de meditação.
  • Registro de Humor e Bem-estar: Registre seu humor e bem-estar diário.

Tecnologias Utilizadas

SwiftUI

SwiftUI é uma framework da Apple para construir interfaces de usuário declarativas. Ele permite a criação de UIs dinâmicas e responsivas de forma rápida e eficiente, utilizando uma sintaxe simples e intuitiva.

Swift

Swift é uma linguagem de programação poderosa e intuitiva desenvolvida pela Apple. Ela é usada para criar aplicativos para iOS, macOS, watchOS e tvOS. Swift é conhecida por sua segurança, performance e facilidade de uso.

Combine

Combine é uma framework de programação reativa da Apple. Ela permite que os desenvolvedores manipulem e processem valores assíncronos ao longo do tempo, facilitando a gestão de eventos e dados assíncronos.

SwiftData

SwiftData é uma maneira rápida, poderosa e fácil de usar para armazenar dados localmente. Ele permite a criação de objetos personalizados, definição de relacionamentos, recuperação com filtragem e classificação, e sincronização com o iCloud usando CloudKit.

CloudKit

CloudKit é a framework de serviços em nuvem da Apple. Ela permite que os desenvolvedores armazenem e gerenciem dados na nuvem, facilitando a sincronização de dados entre vários dispositivos. CloudKit oferece suporte a cache offline mínimo e depende da rede e de uma conta iCloud válida para armazenar dados específicos do usuário.

Modelagem das Classes

Tarefas

enum TaskStatus {
  case completed, uncompleted
}

@Model
final class TaskModel {
  var title: String
  var summary: String
  var hour: Date
  var isCompleted: Bool = false
  var color: String
  }

Humor

enum MoodType: String, Codable {
  case feliz = "Feliz"
  case triste = "Triste"
  case ansioso = "Ansioso"
  case motivado = "Motivado"
  case bravo = "Bravo"
  case cansado = "Cansado"
  case all
}

struct Mood: Identifiable, Equatable {
  let id = UUID()
  let type: MoodType
  var name: String {
    return self.type.rawValue
  }
  let description: String
  let image: Image

Meditação

struct MeditationDO: Identifiable {
  let id = UUID()
  let title: String
  let description: String
  let duration: TimeInterval
  let track: String
  let image: Image
}

AudioManager da Meditação

import Foundation
import AVKit

final class AudioManager: ObservableObject {
    var player: AVAudioPlayer?
    @Published private(set) var isPlaying: Bool = false
    @Published private(set) var isLooping: Bool = false
    
    func startPlayer(track: String, isPreview: Bool = false) {
        guard let url = Bundle.main.url(forResource: track, withExtension: "mp3") else {
            print("Resource not found: \(track)")
            return
        }
        
        do {
            try AVAudioSession.sharedInstance().setCategory(.playback, mode: .default)
            try AVAudioSession.sharedInstance().setActive(true)
            player = try AVAudioPlayer(contentsOf: url)
            
            if isPreview {
                player?.prepareToPlay()
            } else {
                player?.play()
                isPlaying = true
            }
        } catch {
            print("Fail to initialize player", error)
        }
    }
    
    func playPause() {
        guard let player = player else {
            print("Instance of audio player not found")
            return
        }
        
        if player.isPlaying {
            player.pause()
            isPlaying = false
        } else {
            player.play()
            isPlaying = true
        }
    }
    
    func stop() {
        guard let player = player else { return }
        
        if player.isPlaying {
            player.stop()
            isPlaying = false
        }
    }
    
    func toggleLoop() {
        guard let player = player else { return }
        
        player.numberOfLoops = player.numberOfLoops == 0 ? -1 : 0
        isLooping = player.numberOfLoops != 0
    }
}

Planos futuros

Lançamento do MVP (Produto Mínimo Viável)

Estamos quase prontos para lançar nosso MVP. Atualmente, estamos na fase 0.8, o que significa que estamos muito próximos de uma versão 1.0, mas ainda há algumas áreas que precisam de melhorias e ajustes. Entre as principais tarefas pendentes estão:

  • Sistema de Gerar Desafios: Melhorar a lógica e adicionar mais desafios para oferecer uma experiência mais rica aos usuários.
  • Sistema de Tarefas: Implementar duas queries diferentes para tipos distintos de tarefas, aprimorando a funcionalidade e a usabilidade do sistema.

Além...

  • Fazer streaming de faixas de meditação
  • Sistema contendo mais "variaveis" para alocar a tarefa, como tipo da atividade etc...
  • Desafios de atividades físicas baseam-se no HealthKit para ter dados mais precisos
  • Nova aba contendo "ensinamentos" e motivacionais
print("Feito com ❤️ por Mello e Dani")

About

O aplicativo tem como objetivo apoiar o bem-estar pessoal e a produtividade dos usuários. Oferece ferramentas intuitivas, como desafios diários para hábitos saudáveis, gestão de tarefas para organização e um player de meditação com faixas relaxantes

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages