Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
607 changes: 607 additions & 0 deletions DOCUMENTATION.md

Large diffs are not rendered by default.

1,159 changes: 1,159 additions & 0 deletions FIREBASE_BACKEND.md

Large diffs are not rendered by default.

30 changes: 21 additions & 9 deletions app.json
Original file line number Diff line number Diff line change
@@ -1,25 +1,30 @@
{
"expo": {
"name": "UI Playground",
"slug": "expo-ui-playground",
"name": "Declutterly",
"slug": "declutterly",
"version": "1.0.0",
"orientation": "portrait",
"scheme": "expouiplayground",
"scheme": "declutterly",
"userInterfaceStyle": "automatic",
"newArchEnabled": true,
"ios": {
"supportsTablet": true,
"bundleIdentifier": "com.betoatexpo.expo-ui-playground",
"bundleIdentifier": "com.declutterly.app",
"appleTeamId": "T2A8YY9YDW",
"icon": "./assets/icon.icon"
"icon": "./assets/icon.icon",
"infoPlist": {
"NSCameraUsageDescription": "Declutterly needs camera access to capture photos of your spaces for AI analysis",
"NSPhotoLibraryUsageDescription": "Declutterly needs photo library access to save and load room photos"
}
},
"android": {
"adaptiveIcon": {
"foregroundImage": "./assets/images/adaptive-icon.png",
"backgroundColor": "#ffffff"
"backgroundColor": "#6366F1"
},
"edgeToEdgeEnabled": true,
"package": "com.betoatexpo.expouiplayground"
"package": "com.declutterly.app",
"permissions": ["CAMERA", "READ_EXTERNAL_STORAGE", "WRITE_EXTERNAL_STORAGE"]
},
"web": {
"bundler": "metro",
Expand All @@ -34,13 +39,20 @@
"image": "./assets/images/splash-icon.png",
"imageWidth": 200,
"resizeMode": "contain",
"backgroundColor": "#ffffff"
"backgroundColor": "#6366F1"
}
],
"expo-font",
"expo-web-browser",
"expo-video",
"expo-image"
"expo-image",
[
"expo-camera",
{
"cameraPermission": "Allow Declutterly to access your camera to capture room photos for AI analysis"
}
],
"expo-media-library"
],
"experiments": {
"typedRoutes": true
Expand Down
77 changes: 77 additions & 0 deletions app/(tabs)/_layout.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
/**
* Declutterly - Tab Layout
* Main tab navigation with Home, Progress, and Profile tabs
*/

import { Colors } from '@/constants/Colors';
import { Tabs } from 'expo-router';
import React from 'react';
import { useColorScheme, Platform } from 'react-native';

export default function TabLayout() {
const rawColorScheme = useColorScheme();
const colorScheme = rawColorScheme === 'dark' ? 'dark' : 'light';
const colors = Colors[colorScheme];

return (
<Tabs
screenOptions={{
tabBarActiveTintColor: colors.primary,
tabBarInactiveTintColor: colors.tabIconDefault,
tabBarStyle: {
backgroundColor: colors.card,
borderTopColor: colors.border,
...Platform.select({
ios: {
position: 'absolute',
},
}),
},
headerShown: false,
}}
>
<Tabs.Screen
name="index"
options={{
title: 'Home',
tabBarIcon: ({ color, focused }) => (
<TabBarIcon name={focused ? 'house.fill' : 'house'} color={color} />
),
}}
/>
<Tabs.Screen
name="progress"
options={{
title: 'Progress',
tabBarIcon: ({ color, focused }) => (
<TabBarIcon name={focused ? 'chart.bar.fill' : 'chart.bar'} color={color} />
),
}}
/>
<Tabs.Screen
name="profile"
options={{
title: 'Profile',
tabBarIcon: ({ color, focused }) => (
<TabBarIcon name={focused ? 'person.fill' : 'person'} color={color} />
),
}}
/>
</Tabs>
);
}

// Simple SF Symbol icon component
function TabBarIcon({ name, color }: { name: string; color: string }) {
// Using expo-symbols for iOS SF Symbols
const { SymbolView } = require('expo-symbols');

return (
<SymbolView
name={name}
size={24}
tintColor={color}
style={{ width: 28, height: 28 }}
/>
);
}
Loading