Skip to content
Merged
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
33 changes: 33 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,39 @@ Edit `frontend/App.js`:
- Set up CI/CD pipeline
- Deploy to production environment

## Development Workflow
### Branch naming conventions + Conventional Commits
We follow the Conventional Commits specification for commit messages. This ensures a consistent commit history and enables automated versioning and changelog generation.

### Branch Naming Conventions
```
<type>/<short-description>
```
Examples:
- feature/{feature-name}
- fix/{bug-description}
- docs/{documentation-change}
### Commit Message
Follow this structure for commit messages
```
<type>(<scope>): <subject>
```
Where:
```type``` has one of the following:
- feat: New features
- fix: Bug fixes
- docs: Documentation changes
- style: Code formatting only
- refactor: Code changes without behavior change
- test: Adding or updating tests
- chore: Build process or tooling updates

### PR process
- Fork or branch from main
- Create a PR with a clear description
- Ensure checks pass (build, lint, test)
- Request review before merging

## License

MIT
3 changes: 3 additions & 0 deletions frontend/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,3 +48,6 @@ Join our community of developers creating universal apps.

- [Expo on GitHub](https://github.com/expo/expo): View our open source platform and contribute.
- [Discord community](https://chat.expo.dev): Chat with Expo users and ask questions.


u gotta use WSL
3 changes: 2 additions & 1 deletion frontend/app.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@
},
"web": {
"output": "static",
"favicon": "./assets/images/favicon.png"
"favicon": "./assets/images/favicon.png",
"bundler": "metro"
},
"plugins": [
"expo-router",
Expand Down
7 changes: 6 additions & 1 deletion frontend/app/(tabs)/index.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Image } from 'expo-image';
import { Platform, StyleSheet } from 'react-native';
import { Platform, StyleSheet, View, Text } from 'react-native';

import { HelloWave } from '@/components/hello-wave';
import ParallaxScrollView from '@/components/parallax-scroll-view';
Expand Down Expand Up @@ -74,6 +74,11 @@ export default function HomeScreen() {
<ThemedText type="defaultSemiBold">app-example</ThemedText>.
</ThemedText>
</ThemedView>
<View className="flex-1 items-center justify-center bg-white">
<Text className="text-xl font-bold text-blue-500">
Welcome to Nativewind!
</Text>
</View>
Comment on lines +77 to +81
Copy link

Copilot AI Mar 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The newly added JSX block’s indentation is inconsistent with surrounding children of ParallaxScrollView, which makes the structure harder to read. Re-indent this block to match the rest of the file’s formatting.

Suggested change
<View className="flex-1 items-center justify-center bg-white">
<Text className="text-xl font-bold text-blue-500">
Welcome to Nativewind!
</Text>
</View>
<View className="flex-1 items-center justify-center bg-white">
<Text className="text-xl font-bold text-blue-500">
Welcome to Nativewind!
</Text>
</View>

Copilot uses AI. Check for mistakes.
</ParallaxScrollView>
);
}
Expand Down
2 changes: 2 additions & 0 deletions frontend/app/_layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import 'react-native-reanimated';

import { useColorScheme } from '@/hooks/use-color-scheme';

import '../global.css';

export const unstable_settings = {
anchor: '(tabs)',
};
Expand Down
9 changes: 9 additions & 0 deletions frontend/babel.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
module.exports = function (api) {
api.cache(true);
return {
presets: [
["babel-preset-expo", { jsxImportSource: "nativewind" }],
"nativewind/babel",
],
};
};
12 changes: 12 additions & 0 deletions frontend/global.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
@tailwind base;
@tailwind components;
@tailwind utilities;

@font-face {
font-family: 'Roboto Flex';
/* Update the url path to point exactly to where your font file lives */
src: url('./assets/fonts/Roboto-Flex.ttf') format('truetype');
font-weight: 100 1000; /* Roboto Flex is a variable font, so you can define the weight range */
font-style: normal;
font-display: swap;
}
11 changes: 11 additions & 0 deletions frontend/metro.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// Learn more https://docs.expo.io/guides/customizing-metro
const { getDefaultConfig } = require('expo/metro-config');
const { withNativeWind } = require('nativewind/metro');
const {
wrapWithReanimatedMetroConfig,
} = require('react-native-reanimated/metro-config');

/** @type {import('expo/metro-config').MetroConfig} */
const config = getDefaultConfig(__dirname);

module.exports = wrapWithReanimatedMetroConfig(withNativeWind(config, { input: './global.css' }));
3 changes: 3 additions & 0 deletions frontend/nativewind-env.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
/// <reference types="nativewind/types" />

// NOTE: This file should not be edited and should be committed with your source code. It is generated by NativeWind.
15 changes: 9 additions & 6 deletions frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,21 +27,24 @@
"expo-symbols": "~1.0.8",
"expo-system-ui": "~6.0.9",
"expo-web-browser": "~15.0.10",
"nativewind": "^4.2.1",
"prettier-plugin-tailwindcss": "^0.5.14",
"react": "19.1.0",
Comment on lines +31 to 32
Copy link

Copilot AI Mar 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

prettier-plugin-tailwindcss is a formatting tool and shouldn’t ship as a runtime dependency. Move it from dependencies to devDependencies so production installs/build artifacts don’t include it unnecessarily.

Copilot uses AI. Check for mistakes.
"react-dom": "19.1.0",
"react-native": "0.81.5",
"react-native-gesture-handler": "~2.28.0",
"react-native-worklets": "0.5.1",
"react-native-reanimated": "~4.1.1",
"react-native-safe-area-context": "~5.6.0",
"react-native-reanimated": "^4.1.1",
"react-native-safe-area-context": "^5.4.0",
Comment on lines +36 to +37
Copy link

Copilot AI Mar 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The react-native-reanimated range was changed from ~ to ^, and react-native-safe-area-context was both changed to ^ and downgraded (from ~5.6.x to ^5.4.0). With Expo SDK dependencies, using npx expo install and keeping the Expo-resolved versions (typically ~-pinned) avoids subtle incompatibilities at runtime/build time; consider reverting these to the Expo-recommended versions instead of widening/downgrading.

Suggested change
"react-native-reanimated": "^4.1.1",
"react-native-safe-area-context": "^5.4.0",
"react-native-reanimated": "~4.1.1",
"react-native-safe-area-context": "~5.6.0",

Copilot uses AI. Check for mistakes.
"react-native-screens": "~4.16.0",
"react-native-web": "~0.21.0"
"react-native-web": "~0.21.0",
"react-native-worklets": "0.5.1",
"tailwindcss": "^3.4.19"
Copy link

Copilot AI Mar 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tailwindcss is used for build-time styling generation (NativeWind), not at runtime in the app bundle. Consider moving it to devDependencies to keep runtime dependencies minimal (unless you have a specific production-install requirement).

Copilot uses AI. Check for mistakes.
},
"devDependencies": {
"@types/react": "~19.1.0",
"typescript": "~5.9.2",
"eslint": "^9.25.0",
"eslint-config-expo": "~10.0.0"
"eslint-config-expo": "~10.0.0",
"typescript": "~5.9.2"
},
"private": true
}
10 changes: 10 additions & 0 deletions frontend/tailwind.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
/** @type {import('tailwindcss').Config} */
module.exports = {
content: ['./components/**/*.{js,jsx,ts,tsx}', './app/**/*.{js,jsx,ts,tsx}'],
theme: {
extend: {},
},
presets: [require('nativewind/preset')],
plugins: [],
};

5 changes: 3 additions & 2 deletions frontend/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
"**/*.ts",
"**/*.tsx",
".expo/types/**/*.ts",
"expo-env.d.ts"
"expo-env.d.ts",
"nativewind-env.d.ts"
]
}
}