Skip to content

Commit e9ae2a9

Browse files
authored
Merge pull request #1 from webishdev/improve
Improve
2 parents 6cfda6f + 1091892 commit e9ae2a9

17 files changed

Lines changed: 4685 additions & 2998 deletions

.github/workflows/main.yml

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,21 @@ on:
88

99
jobs:
1010
build:
11-
1211
runs-on: ubuntu-latest
1312

1413
strategy:
1514
matrix:
16-
node-version: [16.14.2]
15+
node-version: [24.x]
1716

1817
steps:
19-
- uses: actions/checkout@v3
18+
- uses: actions/checkout@v4
2019
- name: Use Node.js ${{ matrix.node-version }}
21-
uses: actions/setup-node@v3
20+
uses: actions/setup-node@v4
2221
with:
2322
node-version: ${{ matrix.node-version }}
23+
cache: 'npm'
2424
- run: npm ci
25+
- run: npm run lint
26+
- run: npm run format:check
27+
- run: npm run test
2528
- run: npm run build --if-present

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
11
node_modules/
2-
dist/
2+
dist/
3+
.idea/
4+
coverage
5+
mise.toml

.prettierignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
dist
2+
node_modules
3+
docs
4+
*.html

.prettierrc

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"semi": true,
3+
"trailingComma": "es5",
4+
"singleQuote": true,
5+
"printWidth": 100,
6+
"tabWidth": 2,
7+
"useTabs": false
8+
}

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2026
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

README.md

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
# Password Generator
2+
3+
A secure, customizable password generator built with React, TypeScript, and Material-UI. Generate cryptographically secure passwords with customizable length and character sets.
4+
5+
## Features
6+
7+
- **Cryptographically Secure**: Uses `crypto.getRandomValues()` for secure random generation
8+
- **Customizable**: Choose password length (4-64 characters) and character types
9+
- **Modern UI**: Built with Material-UI components
10+
- **Responsive**: Works seamlessly on desktop and mobile devices
11+
- **One-Click Copy**: Easy clipboard integration
12+
- **Accessible**: Proper ARIA labels and keyboard navigation
13+
14+
## Character Options
15+
16+
- **Lowercase**: a-z
17+
- **Uppercase**: A-Z
18+
- **Digits**: 0-9
19+
- **Special**: !$%&#?
20+
- **Avoid ambiguous**: Option to exclude easily confused characters
21+
22+
## Getting Started
23+
24+
### Prerequisites
25+
26+
- Node.js 22.x or higher
27+
- npm or yarn
28+
29+
### Installation
30+
31+
```bash
32+
npm install
33+
```
34+
35+
### Development
36+
37+
```bash
38+
npm run dev
39+
```
40+
41+
Open [http://localhost:5173](http://localhost:5173) to view it in the browser.
42+
43+
### Build
44+
45+
```bash
46+
npm run build
47+
```
48+
49+
Builds the app for production to the `dist` folder.
50+
51+
### Testing
52+
53+
```bash
54+
# Run tests
55+
npm test
56+
57+
# Run tests with UI
58+
npm run test:ui
59+
60+
# Generate coverage report
61+
npm run test:coverage
62+
```
63+
64+
### Linting & Formatting
65+
66+
```bash
67+
# Run ESLint
68+
npm run lint
69+
70+
# Format code with Prettier
71+
npm run format
72+
73+
# Check formatting
74+
npm run format:check
75+
```
76+
77+
## License
78+
79+
MIT
80+
81+
## Contributing
82+
83+
Contributions are welcome! Please feel free to submit a Pull Request.

eslint.config.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import js from '@eslint/js'
2+
import globals from 'globals'
3+
import reactHooks from 'eslint-plugin-react-hooks'
4+
import reactRefresh from 'eslint-plugin-react-refresh'
5+
import tseslint from 'typescript-eslint'
6+
7+
export default tseslint.config(
8+
{ ignores: ['dist'] },
9+
{
10+
extends: [js.configs.recommended, ...tseslint.configs.recommended],
11+
files: ['**/*.{ts,tsx}'],
12+
languageOptions: {
13+
ecmaVersion: 2020,
14+
globals: globals.browser,
15+
},
16+
plugins: {
17+
'react-hooks': reactHooks,
18+
'react-refresh': reactRefresh,
19+
},
20+
rules: {
21+
...reactHooks.configs.recommended.rules,
22+
'react-refresh/only-export-components': [
23+
'warn',
24+
{ allowConstantExport: true },
25+
],
26+
},
27+
},
28+
)

0 commit comments

Comments
 (0)