NetGrade is a Progressive Web App (PWA) designed to deliver a native-like experience on web and mobile platforms.
| Technology | Purpose |
|---|---|
| React 18 | Building user interfaces |
| Ionic Framework | UI components for mobile and desktop apps |
| Capacitor | Native runtime for web apps on mobile platforms devices |
| Vite | Fast build tool and development server |
| Cypress | End-to-end testing |
| Vitest | Unit testing framework |
| Prettier | Code formatting |
| ESLint | Linting and code quality checks |
| TypeORM | ORM |
| SQLite | SQL DB |
| React-Query | State Management |
Before you begin, ensure you have the following installed:
-
Node.js (LTS version recommended)
-
npm (comes with Node.js)
-
Ionic CLI:
npm install -g @ionic/cli native-run
Further please read Env setup.
-
Clone the Repository
-
Install Dependencies:
npm install
To start the application with hot reload in your default browser:
npm run devThis command starts a development server with live reloading enabled.
Note: Before running on a device or emulator, ensure you have the necessary SDKs installed (Xcode for iOS, Android SDK for Android).
For iOS:
ionic capacitor run ios -l --externalFor Android:
ionic capacitor run android -l --external- The
-lflag enables live reload. - The
--externalflag allows other devices on your network to access the dev server.
If you need to stop all running iOS simulators, you can use the following command:
xcrun simctl shutdown allESLint helps in identifying and reporting on patterns found in the code. The configuration is in eslint.config.mjs.
-
Linting Code:
npm run lint
Unit tests are written using Vitest.
-
Running Unit Tests:
npm test -
Running Tests with Coverage:
npm run test:coverage
The coverage report is generated in the
coverage/directory.
Test files are typically located alongside the components they test, following the naming convention
ComponentName.test.tsx.
End-to-end tests are conducted using Cypress.
-
Running E2E Tests:
npm run e2e
Cypress tests are located in the cypress/ directory.
The project uses GitHub Actions for continuous integration and deployment. The workflow is defined in .github/workflows/release.yml.
The following secrets need to be configured in the GitHub repository settings:
- APPLE_DIST_CERT_P12: Base64-encoded Apple Distribution Certificate (.p12 file)
- APPLE_DIST_CERT_PASS: Password for the Apple Distribution Certificate
- IOS_PROVISION_PROFILE: Base64-encoded iOS Provisioning Profile
- APP_STORE_CONNECT_API_KEY_ID: The key ID from your App Store Connect API key
- APP_STORE_CONNECT_ISSUER_ID: The issuer ID from your App Store Connect API key
- APP_STORE_CONNECT_API_KEY_CONTENT: The private key content from your App Store Connect API key
- Ionic Framework Documentation: Ionic Docs
- Capacitor Documentation:
- Fastlane Documentation: Fastlane Docs