Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
2120f80
fix: styling
amitojsingh Aug 12, 2025
a742c44
Add Baloo Paaji fonts to asset manifests and update styles across com…
amitojsingh Aug 14, 2025
15c0cbd
Update font assets and styles; integrate react-native-linear-gradient
amitojsingh Aug 20, 2025
c86eb0a
Add anvaad-js dependency and update styles and constants
amitojsingh Aug 20, 2025
a79d1a1
Fix BaniList component to handle null rows and update color constant …
amitojsingh Aug 20, 2025
d34e4a7
Enhance BaniList component to handle undefined item cases
amitojsingh Aug 20, 2025
6e0bcce
Update dependencies and refactor styles for improved theming support …
amitojsingh Aug 22, 2025
d47da37
Integrate SafeAreaProvider in App component and optimize header styles
amitojsingh Sep 1, 2025
6afc570
Merge branch 'dev' into 290-feature-redesigning-sundar-gutka-readers-…
amitojsingh Sep 5, 2025
7129d81
Refactor convertToUnicode utility function parameter for clarity
amitojsingh Sep 5, 2025
7af17fb
Refactor styles across multiple components to utilize theme-based spa…
amitojsingh Sep 25, 2025
b9d3fd6
Remove unused theme prop validation from BaniHeader component to stre…
amitojsingh Sep 25, 2025
004cbe3
Merge branch 'dev' into improve-themes
amitojsingh Sep 25, 2025
890a850
Enhance theming support by adding new aliases for settings and theme …
amitojsingh Sep 30, 2025
c5368c5
Enhance convertToUnicode function with error handling and input valid…
amitojsingh Sep 30, 2025
ac978a6
Merge pull request #291 from KhalisFoundation/290-feature-redesigning…
amitojsingh Sep 30, 2025
cd8a6f1
Merge branch 'dev' into improve-themes
amitojsingh Sep 30, 2025
25c8984
merge
amitojsingh Sep 30, 2025
3b36397
Add fontFace parameter to createDiv function for customizable typography
amitojsingh Sep 30, 2025
7030372
Update font assets and manifest files
amitojsingh Oct 1, 2025
061c575
Merge pull request #289 from KhalisFoundation/improve-themes
amitojsingh Oct 6, 2025
f84cc1d
🎧 Add Audio – Major Feature Release (#252)
amitojsingh Oct 28, 2025
b7034bb
Refactor Header component and styles for improved layout and responsi…
amitojsingh Oct 28, 2025
8f8cd89
Fix: App stuck on start screen with large text size (#302)
amitojsingh Oct 30, 2025
9a26f6d
Enhance BottomNavigation styles for improved layout (#307)
amitojsingh Oct 30, 2025
b0faad3
Minor ui fixes for Sundar Gutka audio design (#306)
amitojsingh Oct 31, 2025
2328bc7
Reminders Permission Check fix. (#309)
amitojsingh Nov 4, 2025
4b3b409
Bug Fixes (#310)
amitojsingh Nov 4, 2025
2008889
Refactor components and enhance BottomNavigation integration (#311)
amitojsingh Nov 10, 2025
2d3fe95
Refactor AudioTrackDialog for improved localization and user experien…
amitojsingh Nov 10, 2025
9784f46
Save Audio Progress and seek to bookmark position (#313)
amitojsingh Nov 14, 2025
a63a557
Minor Optimization of code. (#323)
amitojsingh Nov 15, 2025
aa1ca65
Add test suite for bottom navigation (#319)
amitojsingh Nov 15, 2025
d288279
fix settings header (#321)
amitojsingh Nov 15, 2025
d7e827c
Enhance audio management in ReaderScreen and AudioPlayer components (…
amitojsingh Nov 15, 2025
73d8dc1
Add a message when sync is not available (#335)
amitojsingh Nov 19, 2025
a52ee7a
Enhance AudioPlayer styles and AudioSettingsModal functionality (#334)
amitojsingh Nov 19, 2025
a3ff167
Refactor ReaderScreen to utilize useBackHandler and enhance WebView f…
amitojsingh Nov 21, 2025
762e101
Multiple fixes for audio functionality (#336)
amitojsingh Nov 24, 2025
a13622c
fix: bugs by uttamdeep kaur (#337)
amitojsingh Nov 27, 2025
1d67756
Updated the safeAreaView for bottom navigation (#340)
amitojsingh Nov 27, 2025
6ef3fa6
fix: overlapping for auto scroll bar (#343)
amitojsingh Nov 27, 2025
21a6c7f
Improved bookmarks (#345)
amitojsingh Nov 27, 2025
09cd68e
switching artists (#341)
amitojsingh Dec 9, 2025
05c0e89
Added Fallback for audio url (#346)
amitojsingh Dec 9, 2025
e7544fc
Refactor header components to simplify back navigation handling (#352)
amitojsingh Dec 9, 2025
a97355a
Refactor ReaderScreen styles and improve auto-scroll functionality (#…
amitojsingh Dec 9, 2025
62ecb09
Fix dev conflicts (#354)
amitojsingh Dec 10, 2025
331208e
Add Negative Flow for initialization. (#347)
amitojsingh Dec 13, 2025
55617a0
Minor Pre launch fixes (#355)
amitojsingh Dec 17, 2025
082a002
Remove deprecated MCP configuration file and update issue template li…
amitojsingh Dec 18, 2025
d7f367f
Enhance auto-scroll functionality in gutkaScript.js (#364)
amitojsingh Dec 20, 2025
b85fc73
Improved the analytics and log events. (#350)
amitojsingh Dec 22, 2025
83934d8
Refactor audio settings in audio.jsx component (#365)
amitojsingh Dec 22, 2025
ddc240e
Reader Position Not Preserved on Theme / Font Size Change (#360)
amitojsingh Dec 24, 2025
6c2171b
Fixed issue #353
arshmeets Dec 31, 2025
d2d2ede
Pulled out the data from item and used afterwards
arshmeets Jan 1, 2026
270d683
Fix for Issue #303
arshmeets Jan 1, 2026
164cd9d
Refactor analytics tracking in app.js and HomeScreen components (#366)
amitojsingh Jan 2, 2026
e498596
Updated “Reached End” experience (#368)
amitojsingh Jan 2, 2026
4ea5128
Added Documentation (#369)
amitojsingh Jan 2, 2026
76e516b
Finished small progress bar at the bottom
arshmeets Jan 15, 2026
eeca945
Merge branch 'dev' into scroll-bar-not-visible-in-dark-mode-fix
arshmeets Feb 9, 2026
d6af170
made requested changes in PR review
arshmeets Feb 9, 2026
7eda2b4
Switch to the right currentElementIdRef
arshmeets Feb 9, 2026
b20bad8
Merge pull request #371 from arshmeets/scroll-bar-not-visible-in-dark…
arshmeets Feb 9, 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
83 changes: 82 additions & 1 deletion .eslintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"extends": ["airbnb", "prettier", "plugin:prettier/recommended", "eslint-config-prettier"],
"parser": "@babel/eslint-parser",
"rules": {
"react-native/no-unused-styles": 2,
"curly": "warn",
"import/no-unresolved": "off",
"global-require": 0,
Expand All @@ -25,7 +26,87 @@
"trailingComma": "es5",
"printWidth": 100
}
],
"import/order": [
"error",
{
"groups": ["builtin", "external", "internal", "parent", "sibling", "index"],
"pathGroups": [
{
"pattern": "react*",
"group": "external",
"position": "before"
},
{
"pattern": "@common/**",
"group": "internal",
"position": "before"
},
{
"pattern": "@**",
"group": "internal",
"position": "before"
}
],
"pathGroupsExcludedImportTypes": ["builtin"],
"newlines-between": "never",
"alphabetize": {
"order": "asc",
"caseInsensitive": true
}
}
]
},
"plugins": ["prettier"]
"overrides": [
{
"files": ["**/*.test.js", "**/*.test.jsx", "**/__mocks__/**", "**/test-utils/**"],
"env": {
"jest": true
},
"rules": {
"react/jsx-filename-extension": "off",
"import/prefer-default-export": "off",
"react/prop-types": "off",
"no-unused-vars": ["error", { "argsIgnorePattern": "^_" }],
"react/react-in-jsx-scope": "off",
"react/jsx-no-useless-fragment": "off",
"no-nested-ternary": "off"
}
},
{
"files": ["**/*.test.jsx"],
"rules": {
"import/order": [
"error",
{
"groups": ["builtin", "external", "internal", "parent", "sibling", "index"],
"pathGroups": [
{
"pattern": "react*",
"group": "external",
"position": "before"
},
{
"pattern": "@common/**",
"group": "internal",
"position": "before"
},
{
"pattern": "@**",
"group": "internal",
"position": "before"
}
],
"pathGroupsExcludedImportTypes": ["builtin"],
"newlines-between": "always",
"alphabetize": {
"order": "asc",
"caseInsensitive": true
}
}
]
}
}
],
"plugins": ["prettier", "react-native"]
}
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@ contact_links:
url: https://github.com/KhalisFoundation/sundar-gutka-react/blob/master/README.md
about: Please check our documentation before creating an issue.
- name: 🐛 Known Issues
url: https://github.com/WahegurooNetwork/SundarGutka/issues?q=is%3Aissue+is%3Aopen+label%3Abug
url: https://github.com/KhalisFoundation/sundar-gutka-react/issues?q=is%3Aissue+is%3Aopen+label%3Abug
about: Check if your issue has already been reported.
36 changes: 36 additions & 0 deletions .github/workflows/pr-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: PR CI

on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
branches: [master, dev]

concurrency:
group: pr-ci-${{ github.ref }}
cancel-in-progress: true

jobs:
lint-and-test:
if: github.event.pull_request.draft == false
runs-on: ubuntu-latest

steps:
- name: Check out code
uses: actions/checkout@v4

- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
cache: "yarn"

- name: Install dependencies
run: yarn install --frozen-lockfile

# Lint step
- name: Run ESLint
run: yarn lint

# Unit tests (Jest example)
- name: Run tests
run: yarn test --ci --watchAll=false --reporters=default
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ local.properties
*.keystore
!debug.keystore
.kotlin/
android/node

# node.js
#
Expand Down
22 changes: 21 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,25 @@
"prettier.semi": true,
"javascript.format.semicolons": "insert",
"prettier.printWidth": 100,
"cSpell.words": ["Pressable"]
"cSpell.words": ["Larivaar", "padched", "Pressable", "shabad", "vishraam"],
"react-native-ide.jsxRuntime": "automatic",
"react-native-ide.reactVersion": "19.0.0",
"react-native-ide.reactNativeVersion": "0.78.0",
"typescript.preferences.includePackageJsonAutoImports": "on",
"javascript.preferences.includePackageJsonAutoImports": "on",
"react-native-ide.enableTypeScript": true,
"react-native-ide.enableJavaScript": true,
"react-native-ide.enableJSX": true,
"react-native-ide.moduleResolution": "node",
"react-native-ide.allowSyntheticDefaultImports": true,
"react-native-ide.esModuleInterop": true,
"react-native-ide.enableRenderer": false,
"react-native-ide.enableFabric": false,
"react-native-ide.enableNewArchitecture": false,
"react-native-ide.compatibilityMode": true,
"react-native-ide.moduleMapping": {
"__RNIDE_lib__/JSXRuntime/react-native-78-79/react-jsx-dev-runtime.development.js": "react/jsx-dev-runtime",
"__RNIDE_lib__/rn-renderer/react-native-78-79/ReactFabric-dev.js": "react-native/Libraries/Renderer/implementations/ReactFabric-dev.js"
},
"java.configuration.updateBuildConfiguration": "interactive"
}
106 changes: 106 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
# Contributing to Sundar Gutka

First of all, thank you for taking the time to contribute!

The following is a set of guidelines for contributing to Sundar Gutka, which is hosted in the Khalis Foundation organization on GitHub. These are mostly guidelines, not rules. Use your best judgment, and feel free to propose changes to this document in a pull request.

## Recommendation

Always write code using functional components (hooks based) following latest React and React-native standards.

## Styleguides

### Git Workflow

We are currently following conventional commit style:

1. **Branch Naming**: Use descriptive branch names (`feature/`, `fix/`, `refactor/`)
2. **Small PRs**: Keep pull requests focused and small
3. **Commit Messages**: Follow conventional commit format
4. **Review**: All PRs require review before merging

### JavaScript Styleguide

All JavaScript must adhere to our ESLint and Prettier rules. We recommend using VSCode with Prettier plugin installed to avoid linting errors. We anyway lint the code before pushing to repo.

## Testing

### Writing Tests

**All new features and bug fixes must include tests.** Tests are required for:

---

- New components
- New hooks
- New utility functions
- Bug fixes (regression tests)

### Test Structure

- Place test files next to the component/function they test: `ComponentName.test.jsx` or `hookName.test.js`
- Use Jest and React Testing Library for component testing
- Use the test utilities from `@common/test-utils` for mocking

### Running Tests

```bash
# Run all tests
yarn test
```

### Test Utilities

See [`src/common/test-utils/README.md`](src/common/test-utils/README.md) for available mocks and utilities.

## React Native Best Practices

### Component Structure

1. **Use Functional Components**: Always use functional components with hooks
2. **Memoization**: Use `React.memo()` for components that receive stable props
3. **Custom Hooks**: Extract reusable logic into custom hooks
4. **Component Organization**: Keep components small and focused on a single responsibility

### State Management

1. **Redux**: Use Redux Toolkit for global state management
2. **Local State**: Use `useState` for component-specific state
3. **Context**: Use React Context sparingly, prefer Redux for shared state

### Navigation

1. **Type Safety**: Use TypeScript types for navigation params when possible
2. **Deep Linking**: Consider deep linking when adding new screens
3. **Back Handler**: Use `useBackHandler` hook for Android back button handling

### Styling

1. **Themed Styles**: Always use `useThemedStyles` hook for styling
2. **StyleSheet**: Use `StyleSheet.create()` for performance
3. **Responsive Design**: Consider different screen sizes and orientations

### Error Handling

1. **Error Boundaries**: Wrap components in error boundaries where appropriate
2. **Try-Catch**: Use try-catch for async operations
3. **User Feedback**: Show user-friendly error messages

### Accessibility

1. **Accessibility Labels**: Add `accessibilityLabel` props to interactive elements
2. **Test IDs**: Use `testID` for testing purposes
3. **Screen Reader**: Test with screen readers (VoiceOver/TalkBack)

### Code Organization

1. **File Naming**: Use PascalCase for components, camelCase for utilities
2. **Import Order**: Follow ESLint import order rules
3. **Barrel Exports**: Use index.js files for clean imports
4. **Path Aliases**: Use `@common`, `@database`, `@service`, etc. for imports

### Dependencies

1. **Keep Updated**: Regularly update dependencies
2. **Native Modules**: Test native module changes on both platforms
3. **Lock File**: Commit `yarn.lock` to version control
Loading