Assignment 1 - Getting Everything Setup
Getting started with setting up the basics for your project. This will be the foundation of your project for later.
Week 1 Assignment: TaskGram Setup
Welcome to your first assignment! This week, you'll be setting up your development environment and creating the foundation for the TaskGram app. Follow the steps below carefully, and remember to commit your progress regularly to GitHub.
Objectives
By completing this assignment, you will:
- Set up a complete React Native development environment
- Create a new Expo project with TypeScript
- Implement basic navigation and screens
- Configure Supabase authentication
- Apply styling using NativeWind
Part 1: Environment Setup
-
Install required software:
- Node.js (LTS version)
- Git
- VS Code
- Expo Go app on your mobile device
-
Install VS Code extensions:
- ESLint
- Prettier
- React Native Tools
- TypeScript and JavaScript Language Features (built into VS Code)
Part 2: Project Creation
- Create a new Expo project:
- Install necessary dependencies:
- Configure NativeWind:
- Create
tailwind.config.js - Update
app.jsonandbabel.config.js - Add TypeScript types
- Create
Make sure to follow the NativeWind setup guide carefully. Incorrect configuration can lead to styling issues.
Part 3: Basic Navigation
Create the following screen components:
app/(auth)/sign-in.tsx:
app/(auth)/sign-up.tsxapp/(app)/home.tsxapp/(app)/profile.tsx
Part 4: Supabase Integration
-
Create a new Supabase project
-
Set up environment variables:
- Create
.envfile - Add Supabase URL and anon key
- Create
-
Create authentication helper:
Part 5: Authentication Flow
- Implement sign-in functionality
- Implement sign-up functionality
- Add session persistence
- Create a loading state
Submission Requirements
Your submission should include:
-
GitHub repository link with:
- Complete project setup
- Working navigation
- Basic screen components
- Supabase authentication integration
- README.md with setup instructions
-
Screen recordings demonstrating:
- Navigation between screens
- Sign-up process
- Sign-in process
- Session persistence
Remember to never commit sensitive information like API keys to GitHub. Use environment variables!
Grading Criteria
- Environment Setup (10%)
- Project Structure (20%)
- Navigation Implementation (20%)
- Supabase Integration (25%)
- Authentication Flow (15%)
- Code Quality & Documentation (10%)
Resources
Need Help?
- Post questions in our Discord channel
- Attend office hours: [Schedule Link]
- Review the lecture materials
- Check the troubleshooting guide in our documentation
Start early! Setting up development environments can sometimes take longer than expected due to various dependencies and configurations.
Extra Credit
If you are looking for some fun extra challenges, then I encourage you to try and implement the following:
- Password reset functionality
- OAuth providers (Google, GitHub)
- Form validation using Zod
- Custom loading animations
- Error handling with toast notifications
Remember: The goal is to have a solid foundation for the rest of the course. Take your time to understand each component and concept as you implement them.