Secure institutional knowledge sharing through short-form video content
A React Native app for creating and sharing short-form video content with segmented recording, native video processing, and secure institutional knowledge sharing capabilities.
- Segmented Recording - Record multiple clips that combine seamlessly
- Time Selection - Choose from 15s, 30s, 1m, or 3m recording durations
- Native Video Processing - Hardware-accelerated video concatenation with AVFoundation
- Deep Linking - Custom
pulsecam://
URL scheme for direct app access - Cross-Platform - React Native with Expo for iOS and Android
- Real-Time Progress - Live progress tracking and auto-save functionality
git clone https://github.com/mieweb/pulse.git
cd pulse
npm install
- Node.js 18+
- Expo CLI
- Xcode (for iOS development)
- Android Studio (for Android development)
# Install dependencies
npm install
# Start Expo development server
npx expo start
# For iOS development
npx expo prebuild
cd ios
pod install
open pulse.xcworkspace
# Build and run in Xcode
# For Android development
npx expo run:android
Required Permissions:
- Camera Access
- Microphone Access
- Storage Access
const defaultSettings = {
maxIndividualDuration: 60, // Maximum duration for a single recording segment
holdDelay: 500, // Delay before hold recording starts (ms)
progressUpdateInterval: 100, // Progress update frequency (ms)
};
The app includes cross-platform video stabilization controls:
- iOS: Full range of stabilization modes (
off
,standard
,cinematic
,cinematicExtended
,auto
) - Android: Simple on/off control
- Control: Tap to cycle modes, long-press for mode picker
- Platform Mapping: iOS-specific modes automatically map to "on" on Android
For detailed information, see VIDEO_STABILIZATION.md.
const timeOptions = [
{ label: "15s", value: 15 },
{ label: "30s", value: 30 },
{ label: "1m", value: 60 },
{ label: "3m", value: 180 },
];
interface RecordingSegment {
id: string;
duration: number;
uri: string;
inMs?: number; // Optional start trim point
outMs?: number; // Optional end trim point
}
// Usage
const outputUri = await VideoConcatModule.export(segments);
This project includes automated CodeQL security analysis for Swift/iOS code. The CodeQL workflow is configured to build the React Native iOS project with the following settings:
- Workspace:
ios/pulse.xcworkspace
- Scheme:
pulse
- SDK: iPhone Simulator SDK
- Configuration: Debug build with code signing disabled
If you need to update the workspace name or scheme used by CodeQL:
-
Workspace Changes: If you rename the Xcode workspace file, update the
-workspace
parameter in.github/workflows/codeql.yml
:-workspace YourNewWorkspace.xcworkspace \
-
Scheme Changes: If you rename the app scheme, update the
-scheme
parameter in.github/workflows/codeql.yml
:-scheme YourNewScheme \
-
Target Changes: If you add new Swift files or targets, ensure they are included in the main app scheme for CodeQL analysis.
The CodeQL analysis requires:
- CocoaPods dependencies installed (
pod install
) - Code signing disabled (
CODE_SIGNING_ALLOWED=NO
) - Metro bundler skipped (
RCT_NO_LAUNCH_PACKAGER=1
,SKIP_BUNDLING=1
) - iPhone simulator build target
pulse/
├── app/ # App router screens
├── components/ # Reusable UI components
├── modules/ # Native modules
│ └── video-concat/ # Video concatenation module
├── hooks/ # Custom React hooks
├── constants/ # App configuration
└── package.json # Dependencies
# Run linting
npm run lint
# Type checking
npx tsc --noEmit
# Build for production
eas build --platform ios --profile production
eas build --platform android --profile production
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature
- Make your changes and test on both iOS and Android
- Commit your changes:
git commit -m 'feat: add amazing feature'
- Push to your branch:
git push origin feature/amazing-feature
- Open a Pull Request
Special thanks to Medical Informatics Engineering, Inc. and Doug Horner for supporting this project. Doug's passion for short-form content and knowledge sharing directly inspired the development of secure institutional video capabilities that make complex information accessible and engaging.
Core Developer: Priyam