Compare commits

...

12 Commits

Author SHA1 Message Date
eshanized
0baeb57cdd 🐛 fix: dev to master
Some checks failed
Check Conventional Commit / check-commit-message (push) Has been cancelled
2025-01-13 14:17:14 +05:30
eshanized
340545c708 🐛 fix: add sitemap 2025-01-13 14:13:49 +05:30
eshanized
ffab675b39 revert: head^1 2025-01-13 14:11:06 +05:30
eshanized
11e5f53b2b 📝 docs: add badges 2025-01-13 14:10:27 +05:30
eshanized
591db54a99 🧹 chore: update dependencies 2025-01-13 14:04:01 +05:30
eshanized
2a35172f8d 🧹 chore: optimize vite config 2025-01-13 14:02:56 +05:30
eshanized
14f89ed2c2 🤖 ci: add conventional commit checker 2025-01-13 13:56:21 +05:30
eshanized
73a21163fc 📝 docs: add manual testimonial 2025-01-13 13:54:03 +05:30
eshanized
ed3ad3025b 📝 docs: proper description added 2025-01-13 13:51:45 +05:30
eshanized
d23735ae75 style: added gradient 2025-01-13 13:48:52 +05:30
eshanized
b2759b3222 style: added icon befor link 2025-01-13 13:47:53 +05:30
eshanized
9d53b218aa 🐛 fix: maintain consistency 2025-01-13 13:41:36 +05:30
11 changed files with 196 additions and 133 deletions

38
.github/workflows/cz.yml vendored Normal file
View File

@@ -0,0 +1,38 @@
name: Check Conventional Commit
on:
push:
branches:
- master
pull_request:
branches:
- master
jobs:
check-commit-message:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Check Conventional Commit
run: |
# Define the conventional commit types with emojis
TYPES=("🚀 feat" "🐛 fix" "📝 docs" "✨ style" "🛠 refactor" "⚡️ perf" "🔬 test" "🔧 build" "🤖 ci" "🧹 chore" "⏪ revert")
# Extract the commit type and emoji from the commit message
COMMIT_MSG=$(git log --format=%B -n 1)
for type in "${TYPES[@]}"; do
type_emoji=${type}
type=${type_emoji#* }
emoji=${type_emoji% *}
if [[ $COMMIT_MSG == $emoji* ]]; then
echo "Commit message is a conventional commit"
exit 0
fi
done
# If we reach here, the commit message is not a conventional commit
echo "Commit message is not a conventional commit"
exit 1

View File

@@ -1,27 +1,27 @@
# Contributing to Snigdha OS Web Dev 🌐
# Contributing to Snigdha OS Web 🌐
Thank you for your interest in contributing to the Snigdha OS Web Dev project! We're excited to have you help us improve the web presence of Snigdha OS. Whether you're fixing a bug, adding a feature, or improving the documentation, your contributions are highly valued.
Thank you for your interest in contributing to the **Snigdha OS Web** project! Were excited to have you help us enhance the web presence of Snigdha OS. Whether you're fixing bugs, adding features, or improving documentation, your contributions are highly appreciated!
## 🛠 How to Contribute
### 1. **Fork the Repository** 🍴
Start by forking the Snigdha OS Web Dev repository to your own GitHub account. This creates a personal copy of the project where you can make changes without affecting the original project.
To begin, fork the Snigdha OS Web repository to your GitHub account. This creates your personal copy of the project, where you can freely make changes without affecting the original repository.
- Navigate to the [Snigdha OS Web Dev repository](https://github.com/Snigdha-OS/snigdhaos-web-dev).
- Click on the "Fork" button at the top right of the page.
- Navigate to the [Snigdha OS Web repository](https://github.com/Snigdha-OS/Snigdha-OS.github.io).
- Click the "Fork" button at the top right corner of the page.
### 2. **Clone Your Fork** 🚀
Clone the forked repository to your local machine:
Next, clone the forked repository to your local machine:
```bash
git clone https://github.com/your-username/snigdhaos-web-dev.git
git clone https://github.com/your-username/Snigdha-OS.github.io.git
```
### 3. **Create a New Branch** 🧑‍💻
Once you have the repository cloned, create a new branch for your work. This helps keep your contributions organized.
Before you start making changes, create a new branch to keep your work organized and separate from the main codebase.
```bash
git checkout -b feature/your-branch-name
@@ -29,14 +29,15 @@ git checkout -b feature/your-branch-name
### 4. **Make Your Changes** ✏️
Now you can make changes! Whether you're fixing a bug, adding a feature, or improving documentation, make sure to follow the guidelines for code style and project structure.
Now youre ready to make changes! Whether you're fixing bugs, adding a new feature, or improving documentation, follow these guidelines:
- **For Code**: Ensure that your code follows the project's coding standards and is well-documented.
- **For Documentation**: Follow the formatting guidelines and be clear with your explanations.
- **For Code**: Ensure your code follows the project's coding standards and is well-commented.
- **For Documentation**: Use the correct formatting and provide clear, concise explanations.
- **For Styles/Design**: Make sure any design improvements align with the project's visual identity.
### 5. **Commit Your Changes** 💾
Commit your changes with a clear and descriptive message.
Commit your changes with a clear, descriptive message that explains what you've done.
```bash
git add .
@@ -45,7 +46,7 @@ git commit -m "Add/modify [brief description of changes]"
### 6. **Push Your Changes** 🔼
Push your branch to your forked repository:
Push your new branch with your changes to your forked repository:
```bash
git push origin feature/your-branch-name
@@ -53,58 +54,58 @@ git push origin feature/your-branch-name
### 7. **Open a Pull Request (PR)** 🔄
Once your changes are ready, open a pull request to merge your work back into the original repository.
Once youve made your changes and pushed them to your fork, open a pull request (PR) to merge them back into the original repository.
- Go to your fork on GitHub and click the "New Pull Request" button.
- Select your branch and the base branch (usually `master` or `develop`).
- Provide a clear description of the changes in the PR, explaining the problem it solves or the feature it adds.
- Go to your fork on GitHub and click the New Pull Request button.
- Choose your branch and compare it with the base branch (usually `master` or `develop`).
- Write a detailed description of your changes and the issue they address (if any).
### 8. **Address Feedback** 💬
After opening the PR, maintainers may review your changes and provide feedback. Be prepared to make additional changes based on their suggestions.
After opening the PR, the maintainers will review your changes and may provide feedback. Be ready to make further updates based on their suggestions.
### 9. **Celebrate** 🎉
Once your pull request is merged, celebrate! You've just contributed to Snigdha OS Web Dev and made the web experience better for everyone!
### 9. **Celebrate!** 🎉
Once your PR is merged, congratulations! You've contributed to Snigdha OS Web and made the web experience better for everyone.
Snigdha OS Web
## 📝 Code of Conduct
Please follow the [Snigdha OS Code of Conduct](https://github.com/Snigdha-OS/snigdhaos-web-dev/blob/master/CODE_OF_CONDUCT.md) when contributing to this repository. We want to foster a welcoming and inclusive environment for all contributors.
Please adhere to the [Snigdha OS Code of Conduct](https://github.com/Snigdha-OS/Snigdha-OS.github.io/blob/master/CODE_OF_CONDUCT.md) when contributing to this repository. We strive to maintain a welcoming and inclusive environment for all contributors.
Snigdha OS Web
## 🚨 Reporting Issues
If you find any issues or bugs, please follow the steps below to report them:
1. Check if the issue has already been reported.
2. If not, open an issue in the [Issues section](https://github.com/Snigdha-OS/snigdhaos-web-dev/issues).
3. Provide as much detail as possible:
- Describe the issue clearly.
- Include steps to reproduce the issue.
- If possible, attach logs or screenshots.
If you encounter any issues or bugs, please follow the steps below to report them:
1. **Search for Existing Issues**: Check if the issue has already been reported before opening a new one.
2. **Open a New Issue**: If the issue hasnt been reported, go to the [Issues section](https://github.com/Snigdha-OS/Snigdha-OS.github.io/issues) and create a new issue.
3. **Provide Detailed Information**: Include as much detail as possible:
- A clear description of the issue.
- Steps to reproduce the issue.
- Any relevant logs or screenshots that can help maintainers understand the problem.
Snigdha OS Web
## 💡 Ideas for Contribution
You can contribute in various ways:
- **Bug Fixes**: Help us by identifying and fixing issues in the web app.
- **Feature Requests**: Have an idea for a new feature? Open an issue or a pull request!
- **Documentation**: Contribute to improving the documentation by clarifying instructions or adding new information.
- **Styling/Design**: Help us make the website look better by improving the UI and UX.
There are many ways you can contribute to the Snigdha OS Web project:
- **Bug Fixes**: Help us identify and resolve bugs in the web app.
- **New Features**: Got an idea for a new feature? Feel free to open an issue or submit a PR!
- **Documentation Improvements**: Enhance the documentation by clarifying instructions, adding examples, or updating outdated content.
- **UI/UX Improvements**: Contribute to making the website visually appealing and easy to use by improving its design.
Snigdha OS Web
## 📜 License
By contributing, you agree that your contributions will be licensed under the [MIT License](https://github.com/Snigdha-OS/snigdhaos-web-dev/blob/master/LICENSE).
By contributing to this repository, you agree that your contributions will be licensed under the [MIT License](https://github.com/Snigdha-OS/Snigdha-OS.github.io/blob/master/LICENSE).
Snigdha OS Web
## 🤝 Thank You!
Thank you for being a part of the Snigdha OS Web Dev community! Every contribution helps us make Snigdha OS better for everyone. We look forward to your contributions!
Thank you for being a part of the Snigdha OS Web community! Every contribution, no matter how big or small, helps make Snigdha OS better for everyone. We look forward to your contributions!

View File

@@ -32,6 +32,8 @@
<!-- Canonical Link to prevent duplicate content issues -->
<link rel="canonical" href="https://snigdha-os.github.io/" />
<link rel="sitemap" type="application/xml" href="/sitemap.xml" />
<!-- Structured Data: JSON-LD for better understanding of page content -->
<script type="application/ld+json">
{

View File

@@ -25,7 +25,7 @@
"validate": "npm run lint && npm run type-check && npm run test"
},
"dependencies": {
"@tanstack/react-query": "^5.63.0",
"@tanstack/react-query": "^5.64.0",
"clsx": "^2.1.1",
"framer-motion": "^11.17.0",
"lucide-react": "^0.344.0",
@@ -44,7 +44,7 @@
"autoprefixer": "^10.4.20",
"eslint": "^9.18.0",
"eslint-plugin-react-hooks": "^5.1.0",
"eslint-plugin-react-refresh": "^0.4.16",
"eslint-plugin-react-refresh": "^0.4.18",
"gh-pages": "^6.3.0",
"globals": "^15.14.0",
"husky": "^8.0.3",

28
pnpm-lock.yaml generated
View File

@@ -9,8 +9,8 @@ importers:
.:
dependencies:
'@tanstack/react-query':
specifier: ^5.63.0
version: 5.63.0(react@18.3.1)
specifier: ^5.64.0
version: 5.64.0(react@18.3.1)
clsx:
specifier: ^2.1.1
version: 2.1.1
@@ -61,8 +61,8 @@ importers:
specifier: ^5.1.0
version: 5.1.0(eslint@9.18.0(jiti@1.21.7))
eslint-plugin-react-refresh:
specifier: ^0.4.16
version: 0.4.16(eslint@9.18.0(jiti@1.21.7))
specifier: ^0.4.18
version: 0.4.18(eslint@9.18.0(jiti@1.21.7))
gh-pages:
specifier: ^6.3.0
version: 6.3.0
@@ -954,11 +954,11 @@ packages:
'@sinonjs/fake-timers@10.3.0':
resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==}
'@tanstack/query-core@5.62.16':
resolution: {integrity: sha512-9Sgft7Qavcd+sN0V25xVyo0nfmcZXBuODy3FVG7BMWTg1HMLm8wwG5tNlLlmSic1u7l1v786oavn+STiFaPH2g==}
'@tanstack/query-core@5.64.0':
resolution: {integrity: sha512-/MPJt/AaaMzdWJZTafgMyYhEX/lGjQrNz8+NDQSk8fNoU5PHqh05FhQaBrEQafW2PeBHsRbefEf//qKMiSAbQQ==}
'@tanstack/react-query@5.63.0':
resolution: {integrity: sha512-QWizLzSiog8xqIRYmuJRok9VELlXVBAwtINgVCgW1SNvamQwWDO5R0XFSkjoBEj53x9Of1KAthLRBUC5xmtVLQ==}
'@tanstack/react-query@5.64.0':
resolution: {integrity: sha512-tBMzlROROUcTDMpDt1NC3n9ndKnJHPB3RCpa6Bf9f31TFvqhLz879x8jldtKU+6IwMSw1Pn4K1AKA+2SYyA6TA==}
peerDependencies:
react: ^18 || ^19
@@ -1394,8 +1394,8 @@ packages:
peerDependencies:
eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0
eslint-plugin-react-refresh@0.4.16:
resolution: {integrity: sha512-slterMlxAhov/DZO8NScf6mEeMBBXodFUolijDvrtTxyezyLoTQaa73FyYus/VbTdftd8wBgBxPMRk3poleXNQ==}
eslint-plugin-react-refresh@0.4.18:
resolution: {integrity: sha512-IRGEoFn3OKalm3hjfolEWGqoF/jPqeEYFp+C8B0WMzwGwBMvlRDQd06kghDhF0C61uJ6WfSDhEZE/sAQjduKgw==}
peerDependencies:
eslint: '>=8.40'
@@ -3562,11 +3562,11 @@ snapshots:
dependencies:
'@sinonjs/commons': 3.0.1
'@tanstack/query-core@5.62.16': {}
'@tanstack/query-core@5.64.0': {}
'@tanstack/react-query@5.63.0(react@18.3.1)':
'@tanstack/react-query@5.64.0(react@18.3.1)':
dependencies:
'@tanstack/query-core': 5.62.16
'@tanstack/query-core': 5.64.0
react: 18.3.1
'@types/babel__core@7.20.5':
@@ -4042,7 +4042,7 @@ snapshots:
dependencies:
eslint: 9.18.0(jiti@1.21.7)
eslint-plugin-react-refresh@0.4.16(eslint@9.18.0(jiti@1.21.7)):
eslint-plugin-react-refresh@0.4.18(eslint@9.18.0(jiti@1.21.7)):
dependencies:
eslint: 9.18.0(jiti@1.21.7)

57
push.sh
View File

@@ -6,77 +6,72 @@
# Define the conventional commit types with new emojis
TYPES=("🚀 feat" "🐛 fix" "📝 docs" "✨ style" "🛠 refactor" "⚡️ perf" "🔬 test" "🔧 build" "🤖 ci" "🧹 chore" "⏪ revert")
# Function to display an error and exit
# Function to display an error and exit and
error_exit() {
echo -e "\033[1;31m[ERROR]\033[0m $1" # Prints the error message in red color
exit 1 # Exits the script with a non-zero status
echo -e "\033[1;31m[ERROR]\033[0m $1"
exit 1
}
# Ensure the script is run in a Git repository
git rev-parse --is-inside-work-tree > /dev/null 2>&1 || error_exit "This is not a Git repository."
# Get the current branch name using Git
# Get the current branch name
branch=$(git rev-parse --abbrev-ref HEAD)
# Pull the latest changes from the remote repository to stay up-to-date
# Pull the latest changes from the remote repository
echo "Pulling latest changes from remote branch '$branch'..."
git pull origin "$branch" || error_exit "Failed to pull changes from the remote repository. Please resolve any conflicts manually."
# Check if there are any changes to commit (both staged and unstaged)
if git diff --quiet && git diff --cached --quiet; then
error_exit "No changes detected to commit." # If no changes, exit the script
fi
# Prompt the user to select a commit type from the predefined list of types
# Prompt the user to select a commit type
echo "Select a commit type:"
select type in "${TYPES[@]}"; do
if [[ -n "$type" ]]; then # If a valid selection is made, break the loop
if [[ -n "$type" ]]; then
break
else
echo "Invalid selection. Please try again." # If invalid, prompt again
echo "Invalid selection. Please try again."
fi
done
# Extract the commit type (e.g., "feat") and emoji (e.g., "🚀") from the selected type
type_emoji=${type} # The full emoji and type (e.g., "🚀 feat")
type=${type_emoji#* } # Extract the commit type (e.g., "feat") by removing the emoji
emoji=${type_emoji% *} # Extract the emoji (e.g., "🚀") by removing the type
# Extract the commit type and emoji from the selection
type_emoji=${type}
type=${type_emoji#* }
emoji=${type_emoji% *}
# Prompt the user to enter a short description for the commit
# Prompt the user to enter a short description
read -p "Enter a short description: " desc
if [ -z "$desc" ]; then # If the description is empty, exit with an error
if [ -z "$desc" ]; then
error_exit "A short description is required!"
fi
# Prompt the user to enter a longer description (optional)
read -p "Enter a longer description (optional): " long_desc
# Create the commit message using the emoji, type, and description
# Create the commit message
commit_msg="$emoji $type: $desc"
# If the user provided a longer description, append it to the commit message
# If a longer description was provided, add it to the commit message
if [ -n "$long_desc" ]; then
commit_msg+="\n\n$long_desc" # Adds the longer description to the commit message
commit_msg+="\n\n$long_desc"
fi
# Print the commit message to the console for review
# Print the commit message to the console
echo -e "\nCommit message:"
echo -e "\033[1;36m$commit_msg\033[0m" # Prints the commit message in cyan color
echo -e "\033[1;36m$commit_msg\033[0m"
# Stage all changes for commit
# Stage all changes
git add .
# Commit the changes with the constructed commit message
# Commit the changes with the conventional commit message
if git commit -m "$commit_msg"; then
echo -e "\033[1;32mCommit successful!\033[0m" # If commit is successful, print success message in green
echo -e "\033[1;32mCommit successful!\033[0m"
else
error_exit "Commit failed. Please check your changes and try again." # If commit fails, show error and exit
error_exit "Commit failed."
fi
# Push the changes to the remote repository
echo "Pushing changes to remote branch '$branch'..."
if git push origin "$branch"; then
echo -e "\033[1;32mChanges pushed to remote branch '$branch'.\033[0m" # If push is successful, print success message in green
echo -e "\033[1;32mChanges pushed to remote branch '$branch'.\033[0m"
else
error_exit "Push failed. Please check your connection or branch permissions." # If push fails, show error and exit
fi
error_exit "Push failed. Please check your connection or branch permissions."
fi

View File

@@ -11,33 +11,34 @@ interface ContributorCardProps {
export function ContributorCard({ login, avatarUrl, contributions, profileUrl }: ContributorCardProps) {
return (
<motion.div
whileHover={{ y: -5 }}
className="bg-white/80 backdrop-blur-sm p-6 rounded-lg border border-gray-200"
whileHover={{ y: -5, scale: 1.02 }}
whileTap={{ scale: 0.98 }}
className="bg-white/80 backdrop-blur-sm p-6 rounded-lg border border-gray-200 shadow-md w-72 h-48 transition-all flex flex-col justify-between"
>
<div className="flex items-center gap-4">
<img
src={avatarUrl}
alt={`${login}'s avatar`}
className="w-24 h-24 rounded-full"
className="w-20 h-20 rounded-full object-cover"
/>
<div>
<h3 className="font-semibold text-gray-900">{login}</h3>
<h3 className="font-semibold text-gray-900 text-lg truncate">{login}</h3>
<div className="flex items-center gap-2 text-sm text-gray-600">
<GitCommit className="h-4 w-4" />
<span>{contributions} contributions</span>
</div>
</div>
</div>
<a
<motion.a
href={profileUrl}
target="_blank"
rel="noopener noreferrer"
className="mt-4 flex items-center gap-2 text-sm text-cornflower-blue hover:underline"
whileHover={{ x: 5 }}
className="mt-4 flex items-center gap-2 text-sm text-blue-600 hover:underline"
>
<Github className="h-4 w-4" />
View Profile
</a>
</motion.a>
</motion.div>
);
}
}

View File

@@ -1,9 +1,9 @@
import { motion } from 'framer-motion';
import { MapPin, Users, Book } from 'lucide-react';
import type { GithubUser } from '../../lib/github';
import { MapPin, Users, Book, Github } from 'lucide-react'; // Added Github icon
import type { GithubUser } from '../../lib/github';
interface TeamMemberCardProps {
user: GithubUser ;
user: GithubUser;
role: string;
description: string;
}
@@ -13,7 +13,7 @@ export function TeamMemberCard({ user, role, description }: TeamMemberCardProps)
<motion.div
whileHover={{ scale: 1.05 }}
transition={{ type: 'spring', stiffness: 300 }}
className="bg-white shadow-lg rounded-lg p-6 border border-gray-200 flex flex-col justify-between"
className="bg-gradient-to-r from-white to-blue-50 shadow-lg rounded-lg p-6 border border-gray-200 flex flex-col justify-between"
>
<div className="flex items-start gap-4">
<img
@@ -52,8 +52,9 @@ export function TeamMemberCard({ user, role, description }: TeamMemberCardProps)
rel="noopener noreferrer"
className="mt-4 inline-flex items-center text-sm text-cornflower-blue hover:underline transition-colors duration-200"
>
<Github className="h-4 w-4 mr-2" /> {/* Added spacing after the icon */}
View GitHub Profile
</a>
</motion.div>
);
}
}

View File

@@ -12,7 +12,7 @@ export const teamMembers = [
{
username: 'XlebyllleK',
role: 'Key Developer',
description: 'Leads Web Infrastructures and Package Builds.',
description: 'Plays a pivotal role in core development, focusing on innovative solutions and system optimizations to enhance functionality.',
},
{
username: 'iconized',

View File

@@ -13,5 +13,10 @@ export const testimonials = [
content: "साइबर सुरक्षा के क्षेत्र में शुरुआती और पेशेवर दोनों के लिए आदर्श। व्यापक दस्तावेज़ीकरण एक बेहतरीन संसाधन है।",
author: "विक्रम अय्यर",
role: "साइबर सुरक्षा सलाहकार"
},
{
content: "স্নিগ্ধা ওএস আমাদের সাইবার নিরাপত্তার কাজে বিপ্লব এনেছে। এর সহজ ইন্টারফেস এবং শক্তিশালী টুলগুলি অসাধারণ।",
author: "সুব্রত ঘোষ",
role: "সাইবার নিরাপত্তা বিশেষজ্ঞ"
}
];

View File

@@ -3,39 +3,59 @@ import react from '@vitejs/plugin-react';
import { resolve } from 'path';
import ViteSitemap from 'vite-plugin-sitemap';
export default defineConfig({
plugins: [
react(),
ViteSitemap({
hostname: 'https://www.snigdhaos.org',
outDir: './dist',
changefreq: 'daily',
priority: 0.7,
// lastmod: true,
}),
],
resolve: {
alias: {
'@': resolve(__dirname, './src'),
export default defineConfig(({ mode }) => {
const isProduction = mode === 'production';
return {
plugins: [
react(),
ViteSitemap({
hostname: process.env.VITE_SITE_URL || 'https://www.snigdhaos.org',
outDir: './dist',
changefreq: 'daily',
priority: 0.7,
}),
],
resolve: {
alias: {
'@': resolve(__dirname, './src'),
},
},
},
build: {
rollupOptions: {
output: {
entryFileNames: 'script.js',
assetFileNames: ({ name }) => {
if (name && name.endsWith('.css')) {
return 'style.css';
}
return 'assets/[name]-[hash][extname]';
css: {
preprocessorOptions: {
scss: {
additionalData: `@import "@/styles/global.scss";`, // Import global SCSS
},
},
},
},
optimizeDeps: {
exclude: ['lucide-react'],
},
server: {
open: true, // Automatically open the browser when running the development server
},
build: {
rollupOptions: {
output: {
entryFileNames: 'script.js',
chunkFileNames: 'chunk-[name]-[hash].js',
assetFileNames: ({ name }) => {
if (name && name.endsWith('.css')) {
return 'style.css';
}
return 'assets/[name]-[hash][extname]';
},
},
},
terserOptions: {
compress: {
drop_console: isProduction, // Remove console logs in production
drop_debugger: isProduction, // Remove debugger in production
},
},
},
optimizeDeps: {
exclude: ['lucide-react'],
},
server: {
open: true,
port: 5173, // Default port
strictPort: false, // Allow using a different port if 5173 is taken
},
envDir: './env', // Define directory for environment variables
};
});