Skip to content

Commit c2ff580

Browse files
committed
refactor: clean up project structure and rename base package
1 parent 1c3df6b commit c2ff580

109 files changed

Lines changed: 855 additions & 1257 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
blank_issues_enabled: false
22
contact_links:
33
- name: Segurança
4-
url: https://github.com/seunome/scanora/security
4+
url: https://github.com/Soturine/scanora/security
55
about: Não abra issues públicas para vulnerabilidades.
6-

.github/workflows/pages.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ on:
44
push:
55
branches: ["main"]
66
paths:
7-
- "docs/**"
7+
- "site/**"
88
- ".github/workflows/pages.yml"
99
workflow_dispatch:
1010

@@ -31,7 +31,7 @@ jobs:
3131
run: |
3232
rm -rf _site
3333
mkdir -p _site
34-
cp -R docs/. _site/
34+
cp -R site/. _site/
3535
touch _site/.nojekyll
3636
3737
- name: Upload artifact
@@ -42,7 +42,7 @@ jobs:
4242
deploy:
4343
environment:
4444
name: github-pages
45-
url: placeholder-page-url
45+
url: ${{ steps.deployment.outputs.page_url }}
4646
needs: build
4747
runs-on: ubuntu-latest
4848
steps:

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
.gradle/
22
.idea/
3+
.vscode/
34
build/
45
**/build/
56
local.properties

CHANGELOG.md

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,30 @@
22

33
Este projeto segue Semantic Versioning e recomenda Conventional Commits no fluxo de contribuição.
44

5+
## [0.1.2] - 2026-04-22
6+
7+
### Added
8+
9+
- Estrutura `planning/` para documentos de escopo e planejamento.
10+
- Diretório `site/` dedicado ao GitHub Pages, separado da documentação técnica.
11+
12+
### Changed
13+
14+
- Rename completo de package, namespace e `applicationId` para `com.soturine.scanora`.
15+
- README, site e workflows foram revisados para deixar a apresentação pública mais direta e consistente.
16+
- `docs/` passou a conter apenas documentação técnica em Markdown.
17+
18+
### Fixed
19+
20+
- Links e templates que ainda apontavam para placeholders antigos ou para caminhos legados do site.
21+
- Workflow do GitHub Pages agora publica `site/` em vez de `docs/`.
22+
- Referências internas do projeto foram alinhadas ao package real sem quebrar imports.
23+
24+
### Planned
25+
26+
- Substituir mockups e placeholders por capturas reais do app em emulador ou dispositivo.
27+
- Refinar o material de release e o checklist para publicação 1.0.
28+
529
## [0.1.1] - 2026-04-21
630

731
### Added
@@ -23,7 +47,7 @@ Este projeto segue Semantic Versioning e recomenda Conventional Commits no fluxo
2347

2448
### Planned
2549

26-
- Rodar revisão visual em emulador/dispositivos reais para validar espaçamento, responsividade e estados extremos.
50+
- Rodar revisão visual em emulador ou dispositivos reais para validar espaçamento, responsividade e estados extremos.
2751
- Ampliar cobertura de testes instrumentados para fluxos de revisão, OCR e exportação.
2852

2953
## [0.1.0] - 2026-04-21

README.md

Lines changed: 43 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -3,47 +3,32 @@
33
![Android](https://img.shields.io/badge/platform-Android-2E7D8C)
44
![Kotlin](https://img.shields.io/badge/Kotlin-2.3.10-23414B)
55
![Compose](https://img.shields.io/badge/Jetpack%20Compose-2026.03.00-DD8A2E)
6-
![Version](https://img.shields.io/badge/version-0.1.1-133942)
7-
![Status](https://img.shields.io/badge/status-MVP%20ativo-2E7D8C)
6+
![Version](https://img.shields.io/badge/version-0.1.2-133942)
87
[![Android CI](https://github.com/Soturine/scanora/actions/workflows/android-ci.yml/badge.svg)](https://github.com/Soturine/scanora/actions/workflows/android-ci.yml)
98
[![Deploy Pages](https://github.com/Soturine/scanora/actions/workflows/pages.yml/badge.svg)](https://github.com/Soturine/scanora/actions/workflows/pages.yml)
109

11-
Repositorio: https://github.com/Soturine/scanora
12-
Site: https://soturine.github.io/scanora/
13-
Releases: https://github.com/Soturine/scanora/releases
10+
Scanora é um app Android de escaneamento de documentos com foco em processamento local, OCR no dispositivo e um fluxo direto de captura, revisão e exportação.
1411

15-
Scanora é um app Android original de escaneamento de documentos com foco em privacidade, processamento local e uma experiência rápida de captura, revisão e exportação.
12+
Repositório: https://github.com/Soturine/scanora
13+
Releases: https://github.com/Soturine/scanora/releases
14+
Site: https://soturine.github.io/scanora/
1615

1716
## Proposta de valor
1817

19-
- Escanear documentos, recibos e páginas de estudo sem depender de upload obrigatório.
20-
- Corrigir perspectiva, aplicar filtros e organizar lotes localmente.
21-
- Exportar PDF, JPG e PNG com fluxo pensado para MVP evolutivo.
22-
- Executar OCR local para copiar texto reconhecido com poucos toques.
23-
24-
## Destaques do MVP
25-
26-
- Fluxo híbrido com `CameraX` para captura manual e `ML Kit Document Scanner` para scanner guiado.
27-
- OCR com `ML Kit Text Recognition`.
28-
- Organização local com `Room`, busca por título, favoritos e tags.
29-
- Preferências locais com `DataStore`.
30-
- Exportação local com `PdfDocument` e compartilhamento via `FileProvider`.
31-
- Tema claro/escuro e onboarding curto em português do Brasil.
18+
- escanear documentos, recibos e páginas de estudo sem upload obrigatório;
19+
- corrigir perspectiva, aplicar filtros e organizar lotes localmente;
20+
- exportar PDF, JPG e PNG com compartilhamento nativo do Android;
21+
- executar OCR local para copiar texto reconhecido com poucos toques.
3222

33-
## Screenshots
23+
## Capturas
3424

35-
Placeholders iniciais:
36-
37-
- ![Home](docs/assets/screenshots/home.svg)
38-
- ![Captura](docs/assets/screenshots/camera.svg)
39-
- ![Editor](docs/assets/screenshots/editor.svg)
40-
- ![Histórico](docs/assets/screenshots/history.svg)
25+
Capturas reais em breve.
26+
Enquanto isso, o repositório já está validado com build Android, lint e testes unitários passando no CI.
4127

4228
## Stack
4329

4430
- Kotlin
4531
- Android Gradle Plugin 9.1.0
46-
- Gradle 9.3.1 Wrapper
4732
- Jetpack Compose + Material 3
4833
- Navigation Compose
4934
- ViewModel + Coroutines + Flow
@@ -54,62 +39,50 @@ Placeholders iniciais:
5439
- ML Kit Document Scanner
5540
- ML Kit Text Recognition
5641

57-
## Arquitetura resumida
58-
59-
Estrutura modular usada no repositório:
42+
## Arquitetura
6043

61-
- `app`: entrypoint, navegação, onboarding, splash e composição dos módulos.
62-
- `core-common`: modelos, contratos de repositório e use cases centrais.
63-
- `core-data`: Room, DataStore, OCR, exportação e pipeline local de imagem.
64-
- `core-ui`: tema e componentes reutilizáveis de UI.
65-
- `feature-home`, `feature-camera`, `feature-editor`, `feature-export`, `feature-history`, `feature-settings`, `feature-ocr`: telas e ViewModels por contexto funcional.
44+
- `app`: bootstrap, navegação, onboarding e integração dos módulos
45+
- `core-common`: modelos, contratos e use cases
46+
- `core-data`: Room, DataStore, OCR, exportação e processamento de imagem
47+
- `core-ui`: tema e componentes reutilizáveis
48+
- `feature-*`: telas e ViewModels por contexto funcional
6649

67-
Mais detalhes em [docs/architecture.md](docs/architecture.md).
50+
Documentação técnica:
51+
- [docs/architecture.md](docs/architecture.md)
52+
- [docs/decisions.md](docs/decisions.md)
53+
- [docs/setup.md](docs/setup.md)
54+
- [docs/testing.md](docs/testing.md)
55+
- [docs/publishing.md](docs/publishing.md)
6856

6957
## Como rodar
7058

71-
1. Abra o projeto no Android Studio mais recente com suporte a AGP 9.1.
72-
2. Use JDK 17 ou superior compatível com AGP 9 no Gradle.
59+
1. Abra o projeto no Android Studio com suporte a AGP 9.1.
60+
2. Use JDK 17 ou superior compatível com AGP 9.
7361
3. Instale Android SDK Platform 36 e Build Tools 36.0.0.
74-
4. Rode `./gradlew assembleDebug` ou use o botão Run do Android Studio.
62+
4. Rode `./gradlew assembleDebug` ou execute o módulo `app`.
7563

76-
Setup detalhado: [docs/setup.md](docs/setup.md)
64+
Package atual:
65+
- `applicationId`: `com.soturine.scanora`
66+
- namespace base: `com.soturine.scanora`
7767

78-
## Privacidade
68+
## GitHub e CI
7969

80-
- Processamento local por padrão.
81-
- OCR e filtros são executados no dispositivo sempre que possível.
82-
- O scanner guiado do ML Kit depende de componentes do Google Play services no aparelho.
83-
- O app não exige backend nem conta para funcionar no MVP.
70+
- O workflow [Android CI](https://github.com/Soturine/scanora/actions/workflows/android-ci.yml) builda o projeto, roda lint e testes unitários.
71+
- O site em GitHub Pages é publicado a partir de `site/`.
72+
- Para o Pages funcionar no repositório publicado, ative em `Settings > Pages > Source: GitHub Actions`.
8473

85-
Leia a política em [PRIVACY_POLICY.md](PRIVACY_POLICY.md).
86-
87-
## Limitações atuais
88-
89-
- O pipeline local de detecção de documento ainda é heurístico para importações/capturas manuais.
90-
- O scanner guiado depende da disponibilidade do ML Kit no dispositivo.
91-
- Build, lint e testes unitários foram validados localmente em 2026-04-21 com Android SDK Platform 36.
92-
- A revisão visual desta rodada foi estática, via Compose/code review; ainda vale fechar QA em emulador e dispositivos reais.
93-
- Ainda não há sincronização em nuvem, criptografia em repouso ou edição colaborativa.
94-
95-
## Contribuição
96-
97-
Contribuições são bem-vindas. Consulte:
98-
99-
- [CONTRIBUTING.md](CONTRIBUTING.md)
100-
- [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)
101-
- [SECURITY.md](SECURITY.md)
74+
## Privacidade
10275

103-
## Roadmap
76+
- processamento local por padrão;
77+
- OCR e filtros executados no dispositivo sempre que possível;
78+
- sem backend obrigatório, login ou sync no MVP.
10479

105-
Resumo curto:
80+
Política completa em [PRIVACY_POLICY.md](PRIVACY_POLICY.md).
10681

107-
- Curto prazo: melhorar detecção de contornos, UX de crop e qualidade de exportação.
108-
- Médio prazo: lote multi-importação mais robusto, favoritos avançados e mais testes.
109-
- Longo prazo: preparação de release 1.0, hardening de storage e refinamento de OCR.
82+
## Status
11083

111-
Versão completa em [ROADMAP.md](ROADMAP.md).
84+
`0.1.2` representa um MVP funcional com estrutura mais limpa de repositório, package real e CI ativo. Ainda faltam capturas reais, QA visual em dispositivos e refinamentos para uma release 1.0.
11285

113-
## Status do projeto
86+
## Contribuir
11487

115-
`0.1.1` representa um MVP funcional e escalável, já validado em build local e pronto para refinamento técnico e polimento de produção.
88+
Consulte [CONTRIBUTING.md](CONTRIBUTING.md), [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md), [SECURITY.md](SECURITY.md) e [ROADMAP.md](ROADMAP.md).

app/build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ plugins {
44
}
55

66
android {
7-
namespace = "com.seunome.scanora"
7+
namespace = "com.soturine.scanora"
88
compileSdk = libs.versions.compileSdk.get().toInt()
99

1010
defaultConfig {
11-
applicationId = "com.seunome.scanora"
11+
applicationId = "com.soturine.scanora"
1212
minSdk = libs.versions.minSdk.get().toInt()
1313
targetSdk = libs.versions.targetSdk.get().toInt()
1414
versionCode = libs.versions.versionCode.get().toInt()

app/src/androidTest/java/com/seunome/scanora/MainActivityTest.kt renamed to app/src/androidTest/java/com/soturine/scanora/MainActivityTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.seunome.scanora
1+
package com.soturine.scanora
22

33
import androidx.compose.ui.test.assertExists
44
import androidx.compose.ui.test.junit4.createAndroidComposeRule

app/src/main/java/com/seunome/scanora/MainActivity.kt renamed to app/src/main/java/com/soturine/scanora/MainActivity.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1-
package com.seunome.scanora
1+
package com.soturine.scanora
22

33
import android.os.Bundle
44
import androidx.activity.ComponentActivity
55
import androidx.activity.compose.setContent
66
import androidx.compose.runtime.getValue
77
import androidx.lifecycle.compose.collectAsStateWithLifecycle
8-
import com.seunome.scanora.app.RootViewModel
9-
import com.seunome.scanora.core.common.model.AppThemePreference
10-
import com.seunome.scanora.core.ui.theme.ScanoraTheme
11-
import com.seunome.scanora.navigation.ScanoraNavHost
12-
import com.seunome.scanora.splash.SplashScreen
8+
import com.soturine.scanora.app.RootViewModel
9+
import com.soturine.scanora.core.common.model.AppThemePreference
10+
import com.soturine.scanora.core.ui.theme.ScanoraTheme
11+
import com.soturine.scanora.navigation.ScanoraNavHost
12+
import com.soturine.scanora.splash.SplashScreen
1313

1414
class MainActivity : ComponentActivity() {
1515
override fun onCreate(savedInstanceState: Bundle?) {

app/src/main/java/com/seunome/scanora/ScanoraApplication.kt renamed to app/src/main/java/com/soturine/scanora/ScanoraApplication.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
package com.seunome.scanora
1+
package com.soturine.scanora
22

33
import android.app.Application
44
import androidx.work.ExistingPeriodicWorkPolicy
55
import androidx.work.PeriodicWorkRequestBuilder
66
import androidx.work.WorkManager
7-
import com.seunome.scanora.app.AppContainer
8-
import com.seunome.scanora.core.data.work.CleanupExportsWorker
7+
import com.soturine.scanora.app.AppContainer
8+
import com.soturine.scanora.core.data.work.CleanupExportsWorker
99
import java.util.concurrent.TimeUnit
1010

1111
class ScanoraApplication : Application() {

app/src/main/java/com/seunome/scanora/app/AppContainer.kt renamed to app/src/main/java/com/soturine/scanora/app/AppContainer.kt

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
1-
package com.seunome.scanora.app
1+
package com.soturine.scanora.app
22

33
import android.content.Context
44
import androidx.room.Room
5-
import com.seunome.scanora.core.common.repository.DocumentProcessingRepository
6-
import com.seunome.scanora.core.common.repository.ExportRepository
7-
import com.seunome.scanora.core.common.repository.OcrRepository
8-
import com.seunome.scanora.core.common.repository.ScanRepository
9-
import com.seunome.scanora.core.common.repository.UserPreferencesRepository
10-
import com.seunome.scanora.core.data.datastore.DefaultUserPreferencesRepository
11-
import com.seunome.scanora.core.data.export.DefaultExportRepository
12-
import com.seunome.scanora.core.data.image.DefaultDocumentProcessingRepository
13-
import com.seunome.scanora.core.data.local.ScanoraDatabase
14-
import com.seunome.scanora.core.data.ocr.DefaultOcrRepository
15-
import com.seunome.scanora.core.data.repository.DefaultScanRepository
5+
import com.soturine.scanora.core.common.repository.DocumentProcessingRepository
6+
import com.soturine.scanora.core.common.repository.ExportRepository
7+
import com.soturine.scanora.core.common.repository.OcrRepository
8+
import com.soturine.scanora.core.common.repository.ScanRepository
9+
import com.soturine.scanora.core.common.repository.UserPreferencesRepository
10+
import com.soturine.scanora.core.data.datastore.DefaultUserPreferencesRepository
11+
import com.soturine.scanora.core.data.export.DefaultExportRepository
12+
import com.soturine.scanora.core.data.image.DefaultDocumentProcessingRepository
13+
import com.soturine.scanora.core.data.local.ScanoraDatabase
14+
import com.soturine.scanora.core.data.ocr.DefaultOcrRepository
15+
import com.soturine.scanora.core.data.repository.DefaultScanRepository
1616

1717
class AppContainer(
1818
private val context: Context,

0 commit comments

Comments
 (0)