A React Native mobile application for learning Japanese language and culture, designed for students and teachers in a collaborative learning environment.
- Dashboard: Overview of learning progress, assignments, and resources
- Resources: Access to learning materials (text, PDFs, videos, links)
- Assignments: Submit assignments with file upload or text input
- Leaderboard: Track progress and compete with fellow students
- Chat: Real-time discussion space for peer learning
- Events: View and attend cultural/language events
- About: Learn about the Nihongo club
- Admin Dashboard: Overview of all students and activities
- Assignment Management: Create, review, and grade student submissions
- Resource Management: Add and organize learning materials
- Event Management: Create and manage club events
- Leaderboard Management: Update student scores and rankings
- Club Management: Update club information and details
- React Native with Expo
- TypeScript for type safety
- Redux Toolkit for state management
- Firebase for backend services:
- Authentication
- Firestore Database
- Storage
- React Navigation for navigation
- React Native Paper for UI components
- Node.js (v16 or higher)
- npm or yarn
- Expo CLI
- Firebase project
-
Clone the repository
git clone <repository-url> cd isshoni_nihongo
-
Install dependencies
npm install
-
Firebase Setup
- Create a new Firebase project at Firebase Console
- Enable Authentication (Email/Password)
- Create a Firestore database
- Enable Storage
- Download your Firebase config file
- Update
src/services/firebase.tswith your Firebase configuration:const firebaseConfig = { apiKey: "your-api-key", authDomain: "your-project.firebaseapp.com", projectId: "your-project-id", storageBucket: "your-project.appspot.com", messagingSenderId: "123456789", appId: "your-app-id" };
-
Run the application
npm start
-
Run on device/simulator
- For iOS:
npm run ios - For Android:
npm run android - For web:
npm run web
- For iOS:
src/
├── components/ # Reusable UI components
├── screens/ # Screen components
│ ├── auth/ # Authentication screens
│ ├── student/ # Student feature screens
│ └── admin/ # Admin feature screens
├── navigation/ # Navigation configuration
├── store/ # Redux store and slices
│ └── slices/ # Redux slices for different features
├── services/ # External services (Firebase, API)
├── types/ # TypeScript type definitions
├── utils/ # Utility functions and seed data
└── constants/ # App constants
The app uses the following Firestore collections:
users- User profiles and authentication dataresources- Learning resources and materialsassignments- Assignment definitions and submissionsevents- Club events and attendancechatMessages- Real-time chat messagesclub- Club information and settings
- Access to learning resources
- Submit assignments
- Participate in discussions
- View leaderboard and events
- Manage all student activities
- Create and grade assignments
- Add learning resources
- Manage events and club information
- Update leaderboard scores
- Create new Redux slices in
src/store/slices/ - Add new screens in appropriate directories
- Update navigation configuration
- Add TypeScript types in
src/types/
The app uses Redux Toolkit for state management with the following slices:
authSlice- Authentication stateresourcesSlice- Learning resourcesassignmentsSlice- Assignments and submissionsleaderboardSlice- Student rankingschatSlice- Real-time chateventsSlice- Club eventsclubSlice- Club information
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is licensed under the MIT License.
For support and questions, please contact the development team or create an issue in the repository.