Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
ec71516
Update README.md
neweracy Jul 7, 2025
8073670
Update README.md
neweracy Jul 7, 2025
1c42250
Update README.md
neweracy Jul 7, 2025
79c917a
feat: autthentication
neweracy Jul 7, 2025
3fbb3c6
feat: autthentication
neweracy Jul 7, 2025
8620df8
auth update
neweracy Jul 8, 2025
19ed4cd
auth update
neweracy Jul 8, 2025
cb8bb95
feat: authentication setup
neweracy Jul 13, 2025
15f2b94
feat: authentication setup
neweracy Jul 13, 2025
2dc48e1
feat: update Google authentication flow and improve error handling
neweracy Jul 13, 2025
185ef4c
feat: update Google authentication flow and improve error handling
neweracy Jul 13, 2025
1dabeae
Refactor code structure for improved readability and maintainability
neweracy Jul 18, 2025
0944860
Refactor code structure for improved readability and maintainability
neweracy Jul 18, 2025
f759121
feat: Enhance DemoShowroomScreen with task management features
neweracy Jul 19, 2025
09515d2
feat: Enhance DemoShowroomScreen with task management features
neweracy Jul 19, 2025
1480c18
feat: Add push notification support and update icons in the app
neweracy Jul 20, 2025
cd4d11f
feat: Add push notification support and update icons in the app
neweracy Jul 20, 2025
f11eb90
feat(TaskModal): Enhance task modal with priority selection and date …
neweracy Jul 28, 2025
c31bee6
feat(TaskModal): Enhance task modal with priority selection and date …
neweracy Jul 28, 2025
626a175
feat(Calendar): Enhance task management with multi-day support and im…
neweracy Jul 30, 2025
98b7139
feat(Calendar): Enhance task management with multi-day support and im…
neweracy Jul 30, 2025
8b2204b
feat(DemoDebugScreen): Update issue link and change title text to 'Ac…
neweracy Jul 30, 2025
8c35913
feat: Implement NewsStore for managing healthcare news articles
neweracy Aug 1, 2025
f2c681b
feat: Add initial deployment workflow and text file
neweracy Aug 4, 2025
41465b3
feat: Add initial test and deployment workflow configuration
neweracy Aug 4, 2025
ac50c68
feat: Add initial test and deployment workflow configuration
neweracy Aug 4, 2025
a2330ff
feat: Add GitHub Actions workflow for testing and deploying Ignite Re…
neweracy Aug 4, 2025
56f87e7
feat: Add GitHub Actions workflow for testing and deploying Ignite Re…
neweracy Aug 4, 2025
2cd4228
feat: Add .env to .gitignore for improved configuration management
neweracy Aug 4, 2025
f819bda
feat: Add .env to .gitignore for improved configuration management
neweracy Aug 4, 2025
61ceb5f
fix: Update dependency installation method and cache key for improved…
neweracy Aug 4, 2025
eadca0c
fix: Update dependency installation method and cache key for improved…
neweracy Aug 4, 2025
431ef1f
feat: Update environment variables for server URLs and add Android Go…
neweracy Aug 4, 2025
6e660e5
feat: Update environment variables for server URLs and add Android Go…
neweracy Aug 4, 2025
a4f45e1
Merge branch 'develop' of https://github.com/neweracy/Dooit into develop
neweracy Aug 4, 2025
f827030
Merge branch 'develop' of https://github.com/neweracy/Dooit into develop
neweracy Aug 4, 2025
26dccde
feat: Add .env to .gitignore to prevent sensitive information from be…
neweracy Aug 4, 2025
8bc90bd
feat: Add .env to .gitignore to prevent sensitive information from be…
neweracy Aug 4, 2025
3ea8be0
fix
neweracy Aug 5, 2025
4df0e3a
feat: Update environment configuration and add Firebase service accou…
neweracy Aug 5, 2025
7184934
feat: Update .gitignore to include Firebase configuration files
neweracy Aug 5, 2025
36e2eaa
fix: Remove duplicate entry for Firebase service account JSON in .git…
neweracy Aug 5, 2025
1633398
feat: Update .gitignore to include additional environment configurati…
neweracy Aug 5, 2025
1b125d3
feat(Notifications): Enhance notification handling with error managem…
neweracy Aug 5, 2025
b9d6981
Merge branch 'develop' of https://github.com/neweracy/Dooit into develop
neweracy Aug 5, 2025
91d5414
Merge pull request #2 from neweracy/feat/news-page-api
neweracy Aug 5, 2025
7857b4e
Update README.md
neweracy Oct 25, 2025
64d4be9
feat: Add .env to .gitignore to prevent environment configuration fil…
neweracy Jan 1, 2026
c790ae3
chore: Remove .env file to prevent sensitive information from being t…
neweracy Jan 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file added .github/workflow/deploy.yml
Empty file.
382 changes: 382 additions & 0 deletions .github/workflows/testAndDeploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,382 @@
name: Test and Deploy Ignite React Native App

on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main, develop ]
workflow_dispatch:
inputs:
deploy_environment:
description: 'Deployment environment'
required: true
default: 'staging'
type: choice
options:
- staging
- production

env:
NODE_VERSION: '18'
JAVA_VERSION: '17'
XCODE_VERSION: '15.0'

jobs:
# Install dependencies and cache them
setup:
runs-on: ubuntu-latest
outputs:
cache-key: ${{ steps.cache-key.outputs.key }}
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'

- name: Generate cache key
id: cache-key
run: echo "key=node-modules-${{ hashFiles('**/package.json') }}" >> $GITHUB_OUTPUT

- name: Cache node modules
uses: actions/cache@v3
with:
path: node_modules
key: ${{ steps.cache-key.outputs.key }}
restore-keys: |
node-modules-

- name: Install dependencies
run: |
npm install
npx react-native doctor || true

# Lint and Type Check
lint-and-typecheck:
needs: setup
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'

- name: Restore node modules cache
uses: actions/cache@v3
with:
path: node_modules
key: ${{ needs.setup.outputs.cache-key }}

- name: Install dependencies
run: npm install

- name: Run ESLint
run: npm run lint

- name: Run TypeScript check
run: npx tsc --noEmit

- name: Check formatting
run: npm run format:check || npx prettier --check "**/*.{js,jsx,ts,tsx,json,md}"

# Run tests
test:
needs: setup
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'

- name: Restore node modules cache
uses: actions/cache@v3
with:
path: node_modules
key: ${{ needs.setup.outputs.cache-key }}

- name: Install dependencies
run: npm install

- name: Run unit tests
run: npm test -- --coverage --watchAll=false

- name: Upload coverage reports
uses: codecov/codecov-action@v3
with:
file: ./coverage/lcov.info
fail_ci_if_error: false

# Security audit
security-audit:
needs: setup
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'

- name: Run security audit
run: npm audit --audit-level=high

- name: Check for vulnerabilities
run: npx audit-ci --moderate

# Build Android APK/AAB
build-android:
needs: [lint-and-typecheck, test]
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/develop' || github.event_name == 'workflow_dispatch'
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'

- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: ${{ env.JAVA_VERSION }}

- name: Setup Android SDK
uses: android-actions/setup-android@v3

- name: Restore node modules cache
uses: actions/cache@v3
with:
path: node_modules
key: ${{ needs.setup.outputs.cache-key }}

- name: Install dependencies
run: npm install

- name: Cache Gradle
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
android/.gradle
key: gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}

- name: Make gradlew executable
run: chmod +x android/gradlew

- name: Clean Android build
run: |
cd android
./gradlew clean

- name: Build Android Debug APK
if: github.ref == 'refs/heads/develop'
run: |
cd android
./gradlew assembleDebug

- name: Build Android Release APK
if: github.ref == 'refs/heads/main' || github.event_name == 'workflow_dispatch'
env:
ANDROID_KEYSTORE: ${{ secrets.ANDROID_KEYSTORE }}
ANDROID_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
ANDROID_KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }}
ANDROID_KEY_PASSWORD: ${{ secrets.ANDROID_KEY_PASSWORD }}
run: |
cd android
./gradlew assembleRelease

- name: Upload Android APK
uses: actions/upload-artifact@v4
with:
name: android-apk
path: |
android/app/build/outputs/apk/**/*.apk
retention-days: 30

# Build iOS IPA
build-ios:
needs: [lint-and-typecheck, test]
runs-on: macos-latest
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/develop' || github.event_name == 'workflow_dispatch'
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'

- name: Setup Xcode
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: ${{ env.XCODE_VERSION }}

- name: Restore node modules cache
uses: actions/cache@v3
with:
path: node_modules
key: ${{ needs.setup.outputs.cache-key }}

- name: Install dependencies
run: npm install

- name: Cache CocoaPods
uses: actions/cache@v3
with:
path: ios/Pods
key: pods-${{ hashFiles('**/Podfile.lock') }}
restore-keys: |
pods-

- name: Install CocoaPods dependencies
run: |
cd ios
bundle install
bundle exec pod install

- name: Build iOS Debug
if: github.ref == 'refs/heads/develop'
run: |
cd ios
xcodebuild -workspace Dooit.xcworkspace \
-scheme Dooit \
-configuration Debug \
-destination 'generic/platform=iOS Simulator' \
build

- name: Build iOS Release
if: github.ref == 'refs/heads/main' || github.event_name == 'workflow_dispatch'
env:
IOS_CERTIFICATE: ${{ secrets.IOS_CERTIFICATE }}
IOS_CERTIFICATE_PASSWORD: ${{ secrets.IOS_CERTIFICATE_PASSWORD }}
IOS_PROVISIONING_PROFILE: ${{ secrets.IOS_PROVISIONING_PROFILE }}
run: |
cd ios
# Setup certificates and provisioning profiles here
xcodebuild -workspace Dooit.xcworkspace \
-scheme Dooit \
-configuration Release \
-archivePath Dooit.xcarchive \
archive

- name: Upload iOS Archive
if: github.ref == 'refs/heads/main' || github.event_name == 'workflow_dispatch'
uses: actions/upload-artifact@v4
with:
name: ios-archive
path: ios/Dooit.xcarchive
retention-days: 30

# Deploy to staging/production
deploy:
needs: [build-android, build-ios]
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main' || github.event_name == 'workflow_dispatch'
environment:
name: ${{ github.event.inputs.deploy_environment || 'staging' }}
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Download Android APK
uses: actions/download-artifact@v4
with:
name: android-apk
path: ./android-build

- name: Download iOS Archive
uses: actions/download-artifact@v4
with:
name: ios-archive
path: ./ios-build

- name: Deploy to App Store Connect
if: contains(github.event.inputs.deploy_environment, 'production') || github.ref == 'refs/heads/main'
env:
APP_STORE_CONNECT_API_KEY: ${{ secrets.APP_STORE_CONNECT_API_KEY }}
APP_STORE_CONNECT_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_ISSUER_ID }}
APP_STORE_CONNECT_KEY_ID: ${{ secrets.APP_STORE_CONNECT_KEY_ID }}
run: |
echo "Deploying to App Store Connect..."
# Add your App Store Connect deployment commands here

- name: Deploy to Google Play Console
if: contains(github.event.inputs.deploy_environment, 'production') || github.ref == 'refs/heads/main'
env:
GOOGLE_PLAY_SERVICE_ACCOUNT: ${{ secrets.GOOGLE_PLAY_SERVICE_ACCOUNT }}
run: |
echo "Deploying to Google Play Console..."
# Add your Google Play Console deployment commands here

- name: Deploy to Firebase App Distribution
if: contains(github.event.inputs.deploy_environment, 'staging')
env:
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
FIREBASE_APP_ID_ANDROID: ${{ secrets.FIREBASE_APP_ID_ANDROID }}
FIREBASE_APP_ID_IOS: ${{ secrets.FIREBASE_APP_ID_IOS }}
run: |
npm install -g firebase-tools
echo "Deploying to Firebase App Distribution..."
# Add Firebase App Distribution commands here

# Send notifications
notify:
needs: [deploy]
runs-on: ubuntu-latest
if: always() && (github.ref == 'refs/heads/main' || github.event_name == 'workflow_dispatch')
steps:
- name: Send Slack notification
if: always()
uses: 8398a7/action-slack@v3
with:
status: ${{ job.status }}
channel: '#mobile-deployments'
text: |
${{ github.event_name == 'workflow_dispatch' && 'Manual' || 'Automatic' }} deployment ${{ job.status }}
Branch: ${{ github.ref_name }}
Environment: ${{ github.event.inputs.deploy_environment || 'staging' }}
Commit: ${{ github.sha }}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}

- name: Send email notification
if: failure()
uses: dawidd6/action-send-mail@v3
with:
server_address: smtp.gmail.com
server_port: 587
username: ${{ secrets.EMAIL_USERNAME }}
password: ${{ secrets.EMAIL_PASSWORD }}
subject: "❌ Dooit App Deployment Failed"
body: |
The deployment of Dooit app has failed.

Branch: ${{ github.ref_name }}
Commit: ${{ github.sha }}
Workflow: ${{ github.workflow }}

Please check the GitHub Actions logs for more details.
to: ${{ secrets.NOTIFICATION_EMAIL }}
from: ${{ secrets.EMAIL_USERNAME }}
Loading
Loading