Эцсийн төсөл
Баяр хүргэе! Та React Native курсын хамгийн сүүлчийн хичээлд хүрлээ. Энэ хичээлд тусдаа код заахгүй — харин 50 хичээлд сурсан бүх зүйлийг нэгтгэж Сургалтын трэкер апп бүтээхийг санал болгож байна. Энэ бол таны портфолид нэмэх, ажлын ярилцлагад үзүүлэх бодит төсөл болно.
Юу бүтээх вэ?
DevTrack — хөгжүүлэгчийн сурлагыг хянах апп. Хэрэглэгч курс нэмж, хичээл бүрийн явцыг тэмдэглэж, streak тооллоо харж чадна.
Аппын үндсэн функцүүд:
- Суpabase Auth ашиглан бүртгэл, нэвтрэх, гарах
- Курс жагсаалт — FlatList дээр
- Хичээл бүрт "Дуусгасан" тэмдэглэх
- AsyncStorage дэх streak тооллого
- Stack + Tab navigation хавсарсан бүтэц
- Push notification — өдөр бүр сануулга
- EAS Build-ээр production build
Төслийн бүтэц
devtrack/
├── app.json
├── eas.json
├── App.tsx
├── lib/
│ └── supabase.ts
├── hooks/
│ ├── useCourses.ts
│ ├── useStreak.ts
│ └── useAuth.ts
├── screens/
│ ├── AuthScreen.tsx
│ ├── HomeScreen.tsx
│ ├── CourseListScreen.tsx
│ ├── CourseDetailScreen.tsx
│ └── ProfileScreen.tsx
├── components/
│ ├── CourseCard.tsx
│ ├── LessonItem.tsx
│ ├── StreakBadge.tsx
│ └── ProgressBar.tsx
└── types/
└── index.ts
Supabase хүснэгтүүд
-- Курсын хүснэгт
create table courses (
id uuid default gen_random_uuid() primary key,
user_id uuid references auth.users not null,
title text not null,
total_lessons integer not null default 0,
color text default 'cyan',
created_at timestamptz default now()
);
-- Хичээлийн явц
create table lesson_progress (
id uuid default gen_random_uuid() primary key,
user_id uuid references auth.users not null,
course_id uuid references courses(id) on delete cascade,
lesson_number integer not null,
completed_at timestamptz default now(),
unique(user_id, course_id, lesson_number)
);
-- RLS идэвхжүүлнэ
alter table courses enable row level security;
alter table lesson_progress enable row level security;
create policy "Өөрийн курс харна" on courses
for all using (auth.uid() = user_id);
create policy "Өөрийн явц харна" on lesson_progress
for all using (auth.uid() = user_id);
Navigation бүтэц
// App.tsx — navigation хавсралт
import { NavigationContainer } from '@react-navigation/native';
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
import { createNativeStackNavigator } from '@react-navigation/native-stack';
type RootStackParamList = {
Tabs: undefined;
CourseDetail: { courseId: string; title: string };
};
type TabParamList = {
Home: undefined;
Courses: undefined;
Profile: undefined;
};
const Stack = createNativeStackNavigator<RootStackParamList>();
const Tab = createBottomTabNavigator<TabParamList>();
function TabNavigator() {
return (
<Tab.Navigator
screenOptions={{
tabBarStyle: { backgroundColor: '#0f172a', borderTopColor: '#1e293b' },
tabBarActiveTintColor: '#22d3ee',
tabBarInactiveTintColor: '#475569',
headerStyle: { backgroundColor: '#0b1120' },
headerTintColor: '#f1f5f9',
}}
>
<Tab.Screen name="Home" component={HomeScreen} options={{ title: 'Нүүр' }} />
<Tab.Screen name="Courses" component={CourseListScreen} options={{ title: 'Курсүүд' }} />
<Tab.Screen name="Profile" component={ProfileScreen} options={{ title: 'Профайл' }} />
</Tab.Navigator>
);
}
export default function App() {
const { session, loading } = useAuth();
if (loading) return <SplashScreen />;
if (!session) return <AuthScreen />;
return (
<NavigationContainer>
<Stack.Navigator screenOptions={{ headerShown: false }}>
<Stack.Screen name="Tabs" component={TabNavigator} />
<Stack.Screen
name="CourseDetail"
component={CourseDetailScreen}
options={{ headerShown: true, title: '' }}
/>
</Stack.Navigator>
</NavigationContainer>
);
}
Хийж дуусгаад юу хийх вэ?
Аппаа бүтээж дуусмагц дараахыг хий:
1. GitHub-д оруул
git init
git add .
git commit -m "feat: DevTrack эцсийн төсөл"
git remote add origin https://github.com/tanii/devtrack.git
git push -u origin main
2. EAS Build-ээр нийтэл
eas build --platform android --profile production
eas submit --platform android
3. README.md бич
Төслийнхөө README-д юу хийдэг, ямар технологи ашигласан, screenshot-ийг нэм. Ажлын ярилцлагад "React Native, Supabase, EAS Build ашиглан бодит апп бүтээсэн" гэж хэлэхэд README нь баталгаа болно.
Та энэ курсаар React Native-н суурь болон дунд түвшний бараг бүх сэдвийг хамрав. Component, navigation, state, API, authentication, camera, location, animation, gesture, TypeScript, test, build, нийтлэлт — бүгд. Цаашаа React Native-н advanced сэдвүүд болох New Architecture, Turbo Modules, native module бичих зэргийг судалж болно. Гол нь бүтээгээрэй — унших биш, хийснээр суралцдаг. Амжилт хүсье!
Дараагийн хичээлд:
Та React Native курсыг амжилттай дуусгалаа! 🎉 Цаашид Next.js курс дээр бэлдэж backend болон fullstack апп хэрхэн бүтээхийг сурах, эсвэл TypeScript курс дээр кодоо илүү найдвартай болгох нь дараагийн алхам байж болно. Бүтээсэн аппаасаа бахархаарай!