A comprehensive mobile application connecting university communities through events, clubs, and social interactions
Features β’ Tech Stack β’ Architecture β’ Getting Started
UniEventApp is a production-ready, cross-platform mobile application designed to revolutionize university event management and student engagement. Built with modern React Native technologies, the app provides a seamless experience across iOS, Android, and web platforms.
The application serves as a central hub for university communities, enabling students and faculty to discover events, join clubs, share posts, and connect with peers - all in one intuitive interface.
-
Event Management System
- Browse and discover university events with advanced filtering
- Create and manage events with rich media support
- RSVP and attendance tracking
- Event categories and tags for easy discovery
-
University Clubs & Organizations
- Explore and join student clubs
- Club-specific event feeds
- Club membership management
- Activity tracking and engagement metrics
-
Social Features
- Create and share posts with the university community
- Real-time chat functionality
- User profiles with customizable settings
- Follow clubs and receive updates
- Firebase Authentication integration
- Secure user session management
- Protected routes and API endpoints
- Role-based access control
- Modern, Responsive UI with React Native Paper
- Smooth Animations powered by Reanimated 3
- Dark/Light Mode support
- Offline-First Architecture with local caching
- Image Optimization via Cloudinary CDN
- Haptic Feedback for enhanced interactions
- Native iOS experience
- Native Android experience
- Progressive Web App (PWA) support
- Consistent UI/UX across all platforms
| Technology | Purpose | Version |
|---|---|---|
| React Native | Cross-platform mobile framework | 0.76.9 |
| Expo | Development platform & tooling | ~52.0 |
| TypeScript | Type-safe development | 5.9.2 |
| Expo Router | File-based navigation system | ~4.0 |
| React Native Reanimated | High-performance animations | ~3.16 |
| React Native Paper | Material Design components | 5.14.5 |
| Technology | Purpose |
|---|---|
| TanStack React Query | Server state management & caching |
| React Context API | Global state management |
| AsyncStorage | Persistent local storage |
| Service | Purpose |
|---|---|
| Firebase | Authentication, real-time database, push notifications |
| PostgreSQL | Primary relational database |
| Cloudinary | Image/video hosting and optimization |
| Axios | HTTP client for API communication |
| Tool | Purpose |
|---|---|
| Jest | Unit and integration testing |
| ESLint | Code linting and quality |
| TypeScript | Static type checking |
Leveraging Expo Router for intuitive, type-safe navigation with automatic deep linking support.
- Modular design with reusable components organized by feature
- Shared components for common UI elements
- Custom hooks for business logic separation
- TypeScript interfaces for type safety across the application
- React Query caching for efficient data fetching
- Lazy loading for improved initial load times
- Image optimization with Cloudinary transformations
- Memoization for expensive computations
- Virtual scrolling for large lists
- react-native-responsive-screen for adaptive layouts
- react-native-size-matters for consistent sizing
- Supports devices from small phones to tablets
Add screenshots of your app here to showcase the UI/UX
Before you begin, ensure you have the following installed:
- Node.js (v16 or higher) - Download
- npm or yarn - Package manager
- Expo CLI -
npm install -g expo-cli - iOS Simulator (Mac only) - via Xcode
- Android Studio - for Android emulator
- Git - Version control
-
Clone the repository
git clone <repository-url> cd UniEventApp
-
Navigate to the app directory
cd uni-event-app -
Install dependencies
npm install
-
Configure environment variables
Create a
.envfile in theuni-event-appdirectory:# Firebase Configuration FIREBASE_API_KEY=your_api_key FIREBASE_AUTH_DOMAIN=your_auth_domain FIREBASE_PROJECT_ID=your_project_id # Cloudinary Configuration CLOUDINARY_CLOUD_NAME=your_cloud_name CLOUDINARY_API_KEY=your_api_key # Database DATABASE_URL=your_postgres_connection_string
-
Start the development server
npm start
-
Run on your platform
- iOS Simulator: Press
ior runnpm run ios - Android Emulator: Press
aor runnpm run android - Web Browser: Press
wor runnpm run web - Physical Device: Scan the QR code with Expo Go app
- iOS Simulator: Press
| Command | Description |
|---|---|
npm start |
Start the development server with LAN access |
npm run android |
Run on Android emulator/device |
npm run ios |
Run on iOS simulator/device |
npm run web |
Run in web browser |
npm test |
Run Jest test suite in watch mode |
npm run check |
Run TypeScript type checking |
npm run clear |
Clear cache and restart development server |
npm run lint |
Run ESLint for code quality |
UniEventApp/
β
βββ uni-event-app/ # Main application directory
β β
β βββ app/ # Expo Router - File-based routing
β β βββ (tabs)/ # Tab navigator screens
β β β βββ index.tsx # Home feed
β β β βββ explore.tsx # Explore events
β β β βββ clubs.tsx # Clubs directory
β β β βββ profile.tsx # User profile
β β β
β β βββ (auth)/ # Authentication flow
β β β βββ login.tsx # Login screen
β β β βββ register.tsx # Registration screen
β β β βββ forgot-password.tsx
β β β
β β βββ (api)/ # API routes
β β β
β β βββ event/ # Event detail screens
β β βββ add-event/ # Create event flow
β β βββ add-club/ # Create club flow
β β βββ add-post/ # Create post flow
β β βββ chat/ # Chat functionality
β β βββ settings/ # App settings
β β βββ user-page/ # User profile pages
β β βββ _layout.tsx # Root layout
β β βββ index.tsx # Entry point
β β
β βββ components/ # Reusable UI components
β β βββ Events/ # Event-related components
β β βββ Clubs/ # Club-related components
β β βββ Home/ # Home screen components
β β βββ Post/ # Post components
β β βββ Shared/ # Shared/common components
β β
β βββ context/ # React Context providers
β β βββ AuthContext.tsx # Authentication state
β β βββ ThemeContext.tsx # Theme management
β β
β βββ hooks/ # Custom React hooks
β β βββ useAuth.ts # Authentication hook
β β βββ useEvents.ts # Event data hook
β β βββ useClubs.ts # Club data hook
β β
β βββ utils/ # Utility functions
β β βββ api.ts # API client configuration
β β βββ helpers.ts # Helper functions
β β βββ validators.ts # Form validation
β β
β βββ types/ # TypeScript definitions
β β βββ event.types.ts # Event interfaces
β β βββ user.types.ts # User interfaces
β β βββ club.types.ts # Club interfaces
β β
β βββ configs/ # Configuration files
β β βββ firebase.config.ts # Firebase setup
β β βββ cloudinary.config.ts # Cloudinary setup
β β
β βββ assets/ # Static assets
β β βββ images/ # Image files
β β βββ fonts/ # Custom fonts
β β βββ icons/ # Icon assets
β β
β βββ data/ # Static data
β β
β βββ app.json # Expo configuration
β βββ package.json # Dependencies
β βββ tsconfig.json # TypeScript configuration
β βββ .env # Environment variables
β
βββ .github/ # GitHub configuration
βββ babel.config.js # Babel configuration
- TypeScript strict mode enabled for maximum type safety
- ESLint configuration for consistent code style
- Prettier integration for automatic code formatting
- Husky pre-commit hooks (if configured)
- Unit tests with Jest for utility functions
- Component tests with React Test Renderer
- Integration tests for critical user flows
- Run
npm testto execute the test suite
// Using React Query for server state
const { data, isLoading, error } = useQuery({
queryKey: ['events'],
queryFn: fetchEvents,
staleTime: 5 * 60 * 1000, // 5 minutes
})
// Using Context for global UI state
const { theme, toggleTheme } = useTheme()For Recruiters & Technical Evaluators
- β Latest React Native 0.76 with New Architecture enabled
- β TypeScript 5.9 throughout the entire codebase
- β File-based routing with Expo Router for type-safe navigation
- β Component-driven development with modular architecture
- β TanStack React Query for efficient server state management
- β Reanimated 3 for 60 FPS animations on the UI thread
- β Lazy loading and code splitting for optimal bundle size
- β Image optimization with Cloudinary CDN integration
- β Offline-first approach with local caching strategies
- β Firebase Authentication for secure user management
- β PostgreSQL for relational data storage
- β RESTful API integration with Axios
- β Real-time features for chat and notifications
- β Cloud storage integration (Cloudinary)
- β Type-safe development with TypeScript interfaces
- β Custom hooks for reusable business logic
- β Context API for global state management
- β Component testing with Jest
- β Responsive design across all device sizes
- β iOS native experience
- β Android native experience
- β Web progressive web app support
- β Consistent UI/UX across all platforms
- β Platform-specific optimizations
This project showcases proficiency in:
Frontend Development
- React Native & Expo ecosystem
- TypeScript for large-scale applications
- Complex navigation patterns
- State management (Context API, React Query)
- Animation and gesture handling
- Responsive and adaptive design
Backend Integration
- Firebase services (Auth, Realtime DB, Storage)
- RESTful API consumption
- Database design and modeling (PostgreSQL)
- Authentication and authorization flows
- File upload and cloud storage
Development Practices
- Git version control
- Component-based architecture
- Custom hooks pattern
- Error handling and validation
- Code organization and modularity
- Cross-platform development
Tools & Technologies
- Expo development platform
- TypeScript compilation and type checking
- Package management (npm)
- Testing frameworks (Jest)
- Development debugging tools
- β Core Features: Fully implemented
- β Authentication: Complete with Firebase
- β Event Management: Fully functional
- β Club Features: Operational
- β Chat System: Integrated
- β Cross-Platform: iOS, Android, Web ready
- π In Progress: Additional features and optimizations
If you want to understand the technologies used:
- React Native Documentation
- Expo Documentation
- TypeScript Handbook
- React Query (TanStack)
- Firebase Documentation
Contributions are welcome! If you'd like to contribute to this project:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Follow the existing code style and patterns
- Write meaningful commit messages
- Add tests for new features
- Update documentation as needed
- Ensure all tests pass before submitting PR
This project is private and proprietary. All rights reserved.
For licensing inquiries, please contact the repository owner.
- Issues: GitHub Issues
- Discussions: GitHub Discussions
For additional questions or collaboration opportunities, please open an issue or contact the maintainers.