diff --git a/README.md b/README.md index 179740e..3444332 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,87 @@ -# MoneyListato +# Money-LIST -App per la gestione delle finanze \ No newline at end of file +## Introduzione + +**Money-LIST** è un'app semplice e intuitiva per la gestione delle proprie finanze. Progettata per essere facile da usare, ti permette di tenere traccia dei tuoi conti, delle transazioni e delle spese ricorsive in modo efficiente. + +## Target + +Questa applicazione è stata sviluppata per utenti che cercano una soluzione rapida e pratica per gestire le proprie finanze quotidiane. + +## Funzionalità + +### 1. Gestione dei Conti + +- **Aggiungere Conto**: Inserisci un nuovo conto con nome, descrizione e saldo disponibile. +- **Modificare Conto**: Aggiorna i dettagli del conto esistente. +- **Eliminare Conto**: Rimuovi un conto esistente dall'app. +- **Visualizzare Saldo**: Monitora il saldo disponibile per ogni conto. + +### 2. Gestione delle Transazioni + +- **Aggiungere Transazione**: Registra una nuova transazione specificando il conto, titolo, importo (positivo per entrate, negativo per uscite), data (preimpostata su oggi), descrizione, categorie e tag. +- **Modificare Transazione**: Modifica i dettagli di una transazione esistente. +- **Eliminare Transazione**: Rimuovi una transazione dal registro. +- **Visualizzare Transazioni**: Consulta il saldo aggiornato e la lista delle transazioni per ogni conto. + +### 3. Gestione delle Spese Ricorsive + +- **Aggiungere Spesa Ricorsiva**: Registra una spesa che si ripete automaticamente a intervalli regolari. +- **Modificare Spesa Ricorsiva**: Aggiorna i dettagli di una spesa ricorsiva esistente. +- **Eliminare Spesa Ricorsiva**: Cancella una spesa ricorsiva dall'app. +- **Visualizzare Spese Ricorsive**: Monitora le spese ricorsive impostate. + +### 4. Foto delle Transazioni (Versione 2.0) + +- **Salvare Foto dello Scontrino**: Associa una foto dello scontrino o del documento alla transazione per una documentazione più completa. + +## Struttura del Progetto + +- **Conti**: Modulo per la gestione dei conti finanziari. +- **Transazioni**: Modulo per la gestione di entrate e uscite finanziarie. +- **Spese Ricorsive**: Modulo per la gestione automatizzata delle spese ricorrenti. +- **Foto delle Transazioni**: Funzionalità avanzata per allegare foto a ogni transazione. + +## Tecnologie Utilizzate + +- **Frontend**: React Native +- **Backend**: TBD +- **Database**: Sqlite +- **Gestione delle Immagini**: TBD (per la versione 2.0) + +## Installazione + +1. Clona il repository: + +```bash +git clone https://git.pansi21.xyz/PanSi21/MoneyListato.git +``` + +## Roadmap + +- [x] **Versione 1.0** + - [x] Gestione dei Conti + - [x] Aggiungere, modificare, eliminare conti + - [x] Visualizzare saldo dei conti + - [x] Gestione delle Transazioni + - [x] Aggiungere, modificare, eliminare transazioni + - [x] Visualizzare lista delle transazioni e saldo aggiornato + - [x] Spese Ricorsive + - [x] Aggiungere, modificare, eliminare spese ricorsive + - [x] Visualizzare spese ricorsive impostate + +- [ ] **Versione 2.0** + - [ ] Foto delle Transazioni + - [ ] Associare foto a ogni transazione + - [ ] Visualizzare foto allegate nelle transazioni + - [ ] Sincronizzazione Cloud + - [ ] Backup automatico dei dati su cloud + - [ ] Sincronizzazione multi-dispositivo + +- [ ] **Versione Futura** + - [ ] Reportistica Avanzata + - [ ] Grafici e statistiche sui conti e le transazioni + - [ ] Esportazione dati in CSV o PDF + - [ ] Notifiche Push + - [ ] Promemoria per le spese ricorsive + - [ ] Notifiche per transazioni insolite \ No newline at end of file diff --git a/app.json b/app.json new file mode 100644 index 0000000..c1d6612 --- /dev/null +++ b/app.json @@ -0,0 +1,36 @@ +{ + "expo": { + "name": "moneyApp", + "slug": "moneyApp", + "version": "1.0.0", + "orientation": "portrait", + "icon": "./assets/images/icon.png", + "scheme": "myapp", + "userInterfaceStyle": "dark", + "splash": { + "image": "./assets/images/splash.png", + "resizeMode": "contain", + "backgroundColor": "#ffffff" + }, + "ios": { + "supportsTablet": true + }, + "android": { + "adaptiveIcon": { + "foregroundImage": "./assets/images/adaptive-icon.png", + "backgroundColor": "#ffffff" + } + }, + "web": { + "bundler": "metro", + "output": "static", + "favicon": "./assets/images/favicon.png" + }, + "plugins": [ + "expo-router" + ], + "experiments": { + "typedRoutes": true + } + } +} diff --git a/app/(tabs)/_layout.tsx b/app/(tabs)/_layout.tsx new file mode 100644 index 0000000..30914fb --- /dev/null +++ b/app/(tabs)/_layout.tsx @@ -0,0 +1,59 @@ +import React from 'react'; +import FontAwesome from '@expo/vector-icons/FontAwesome'; +import { Link, Tabs } from 'expo-router'; +import { Pressable } from 'react-native'; + +import Colors from '@/constants/Colors'; +import { useColorScheme } from '@/components/useColorScheme'; +import { useClientOnlyValue } from '@/components/useClientOnlyValue'; + +// You can explore the built-in icon families and icons on the web at https://icons.expo.fyi/ +function TabBarIcon(props: { + name: React.ComponentProps['name']; + color: string; +}) { + return ; +} + +export default function TabLayout() { + const colorScheme = useColorScheme(); + + return ( + + , + headerRight: () => ( + + + {({ pressed }) => ( + + )} + + + ), + }} + /> + , + }} + /> + + ); +} diff --git a/app/(tabs)/index.tsx b/app/(tabs)/index.tsx new file mode 100644 index 0000000..fccb0b3 --- /dev/null +++ b/app/(tabs)/index.tsx @@ -0,0 +1,30 @@ +import React from 'react'; +import { FlatList, StyleSheet, Text } from 'react-native'; +import { View } from '@/components/Themed'; +import TransactionItem from '@/components/transaction/TransactionItem'; + +export default function TabOneScreen() { + return ( + + Lista Transazioni + } + keyExtractor={item => item.key} + /> + + ); +} + +const styles = StyleSheet.create({ + container: { + flex: 1 + }, + testo: { + color: '#fff', + fontSize: 20, + fontWeight: 'bold', + textAlign: 'center', + paddingVertical: 10, + } +}); diff --git a/app/(tabs)/two.tsx b/app/(tabs)/two.tsx new file mode 100644 index 0000000..8b8234e --- /dev/null +++ b/app/(tabs)/two.tsx @@ -0,0 +1,20 @@ +import { StyleSheet } from 'react-native'; +import { Text, View } from '@/components/Themed'; +import TransactionAdd from '@/components/transaction/TransactionAdd'; +import { useState } from 'react'; + +export default function TabTwoScreen() { + const [refreshKey, setRefreshKey] = useState(0); + const handleTransactionAdded = () => { + setRefreshKey(oldKey => oldKey + 1); + }; + + return ( + + + + ); +} + +const styles = StyleSheet.create({ +}); diff --git a/app/+html.tsx b/app/+html.tsx new file mode 100644 index 0000000..cb31090 --- /dev/null +++ b/app/+html.tsx @@ -0,0 +1,38 @@ +import { ScrollViewStyleReset } from 'expo-router/html'; + +// This file is web-only and used to configure the root HTML for every +// web page during static rendering. +// The contents of this function only run in Node.js environments and +// do not have access to the DOM or browser APIs. +export default function Root({ children }: { children: React.ReactNode }) { + return ( + + + + + + + {/* + Disable body scrolling on web. This makes ScrollView components work closer to how they do on native. + However, body scrolling is often nice to have for mobile web. If you want to enable it, remove this line. + */} + + + {/* Using raw CSS styles as an escape-hatch to ensure the background color never flickers in dark-mode. */} +