Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
115 commits
Select commit Hold shift + click to select a range
a55fb9e
fix/wrong-messages
arpitajamra-design May 21, 2026
2af5855
fix: make speed slider reactive during active animation in Binary/Lin…
HunarBhatia May 21, 2026
4705f6e
fix: distinguish validation errors from search results with correct m…
HunarBhatia May 21, 2026
2dd8ebc
fix: prevent concurrent sort loops on reset in bubble/quicksort
naitik23verma May 21, 2026
7403979
feat: add reusable CopyButton component for code snippets
MD-Mushfiqur123 May 22, 2026
e54bcc7
Stop returning JWT tokens in auth API response body
advikdivekar May 22, 2026
57f05d7
Replace in-memory rate limiter with global Redis sliding window
advikdivekar May 22, 2026
2db1a8f
Merge pull request #87 from arpitajamra-design/fix/wrong-messages
ionfwsrijan May 22, 2026
2780267
feat: persist visualization state using localStorage
sanzzzz-g May 22, 2026
7e3e9bc
Standardize algorithm visualization page layouts
ramyacm23 May 22, 2026
95a07a9
fix: dynamically scale font size for large/negative values in element…
HunarBhatia May 22, 2026
dcc50ce
fix: add missing getFontSize helper definition to all 7 visualizer files
HunarBhatia May 22, 2026
4639d28
fix: unhandled PGRST116 error when fetching user progress
pawanakapkv May 22, 2026
671fb07
Add robust cancellation and reset logic to Merge Sort visualizer
naitik23verma May 22, 2026
eebf53e
added dynamic start node support for BFS visualization
tp-shivha-shakthiy May 22, 2026
5c841a3
Merge branch 'PankajSingh34:main' into main
naitik23verma May 22, 2026
18a6444
Merge pull request #79 from HunarBhatia/fix/speed-slider-reactive-ani…
PankajSingh34 May 22, 2026
cd8fb58
Merge pull request #88 from MD-Mushfiqur123/feat/copy-code-button
PankajSingh34 May 22, 2026
35692b8
Merge pull request #96 from advikdivekar/security/serverless-rate-lim…
PankajSingh34 May 22, 2026
0f6f168
Merge pull request #98 from ramyacm23/feature/standardize-algorithm-ui
PankajSingh34 May 22, 2026
f03f7ed
Merge pull request #100 from pawanakapkv/fix-modulecard-pgrst116
ionfwsrijan May 22, 2026
a2e7bb7
Merge branch 'main' into main
PankajSingh34 May 22, 2026
1ec29b5
Merge pull request #104 from naitik23verma/main
PankajSingh34 May 22, 2026
be931aa
Merge branch 'main' into fix/element-box-overflow
PankajSingh34 May 22, 2026
95efe68
Merge pull request #99 from HunarBhatia/fix/element-box-overflow
PankajSingh34 May 22, 2026
99609bd
fix: warn user when duplicate values are entered in Binary Search input
HunarBhatia May 22, 2026
5c0d6e7
fix: correct indentation in isSorted check
HunarBhatia May 22, 2026
b1e16c3
Merge branch 'main' into feature/persist-visualization-state
sanzzzz-g May 22, 2026
10be03a
fix: add messageType state for proper warning/error/success styling
HunarBhatia May 22, 2026
1c3306b
Merge branch 'main' into fix/binary-search-duplicate-warning
HunarBhatia May 22, 2026
fcdd6c1
Merge pull request #106 from HunarBhatia/fix/binary-search-duplicate-…
ionfwsrijan May 22, 2026
ede8707
Import storage utility functions in animation.jsx
sanzzzz-g May 22, 2026
5c462f1
Merge pull request #95 from advikdivekar/security/jwt-tokens-in-respo…
ionfwsrijan May 22, 2026
d72f534
Merge pull request #97 from sanzzzz-g/feature/persist-visualization-s…
PankajSingh34 May 22, 2026
e612c4d
refactor: extract NAV_LINKS to a shared module to prevent duplication
pawanakapkv May 22, 2026
2635d89
style: use text-primary token for active links instead of hardcoded h…
pawanakapkv May 22, 2026
7960f17
feat(a11y): add aria-current and focus-ring to inner navbar links for…
pawanakapkv May 22, 2026
98aaa3c
feat: add AI chatbot assistant (AlgoBuddy Assistant)
Bhavikapatel06 May 22, 2026
540e77e
Merge branch 'main' into feature/ai-chatbot
Bhavikapatel06 May 22, 2026
d4e1399
fix: replace missing tutorial videos with a placeholder to prevent 40…
pawanakapkv May 22, 2026
3d9f3c8
docs: add TODO comment for future contributors to easily restore vide…
pawanakapkv May 22, 2026
31c7eff
fix: remove duplicate postcss.config.mjs to resolve config ambiguity
Asifmd45 May 22, 2026
7d15c1f
fix: add HTTP security headers to next.config.mjs
Asifmd45 May 22, 2026
48ea59c
Merge pull request #108 from pawanakapkv/fix-disappearing-navbar-links
PankajSingh34 May 23, 2026
af7023a
Merge pull request #110 from Bhavikapatel06/feature/ai-chatbot
PankajSingh34 May 23, 2026
acceca6
Merge pull request #114 from Asifmd45/fix/add-security-headers
PankajSingh34 May 23, 2026
d8dce75
Merge branch 'main' into bfs-dynamic-start-node
PankajSingh34 May 23, 2026
c80e654
Merge pull request #113 from Asifmd45/fix/remove-duplicate-config-files
PankajSingh34 May 23, 2026
018e5d9
Merge pull request #112 from pawanakapkv/fix-tutorial-video-404
PankajSingh34 May 23, 2026
885645d
(improvement): added enhanced visualization for doubly and circluar l…
CodeMaster11000 May 23, 2026
2ea2a67
Merge pull request #115 from CodeMaster11000/UI/UX-improved-visuals-l…
PankajSingh34 May 23, 2026
8000d43
fix: secure chatbot API endpoint with global rate limiting, captcha, …
ionfwsrijan May 23, 2026
37cdacd
Merge pull request #117 from PankajSingh34/fix/secure-chatbot-api
ionfwsrijan May 23, 2026
562cb83
feat: add step counter to all sorting algorithm visualizers
Asifmd45 May 23, 2026
95df606
fix: match footer logo typography with navbar for branding consistency
Asifmd45 May 23, 2026
b68bc97
fix: synchronize linked list traversal next pointers with actual node…
Mudita-Singh May 23, 2026
bef5211
feat: add play/pause state machine and spacebar shortcuts to binary s…
pawanakapkv May 23, 2026
363f760
Merge pull request #118 from Asifmd45/feat/step-counter-sorting
PankajSingh34 May 23, 2026
7022dfe
Add auth rate limiting and email lockout (fixes #134)
ionfwsrijan May 23, 2026
3dde340
Merge pull request #128 from Mudita-Singh/fix/linked-list-next-pointer
PankajSingh34 May 23, 2026
cac479e
Merge pull request #136 from ionfwsrijan/fix/issue-134-auth-rate-limi…
PankajSingh34 May 23, 2026
aaf94c3
Merge pull request #133 from pawanakapkv/feat-binary-search-playback
PankajSingh34 May 23, 2026
4c71dc2
Merge pull request #119 from Asifmd45/fix/footer-logo-consistency
PankajSingh34 May 23, 2026
e325920
Fix back to top button not showing
anujsharma8d May 23, 2026
193ae23
Create auto-approve-on-status.yml
PankajSingh34 May 23, 2026
dbf7020
Merge pull request #138 from PankajSingh34/PankajSingh34-patch-8
PankajSingh34 May 23, 2026
98d3637
Add conditional auto-approve and label workflow
PankajSingh34 May 23, 2026
b42a184
Merge pull request #139 from PankajSingh34/PankajSingh34-patch-9
PankajSingh34 May 23, 2026
c44f798
Add pull_request trigger to labeler workflow
PankajSingh34 May 23, 2026
7f2642e
Merge pull request #142 from PankajSingh34/PankajSingh34-patch-10
PankajSingh34 May 23, 2026
aa9501f
Fix label syntax in IssueLabeler.yml
PankajSingh34 May 23, 2026
1d0564e
Merge pull request #143 from PankajSingh34/PankajSingh34-patch-11
PankajSingh34 May 23, 2026
770488a
Add a Back To Home button on login screen
anujsharma8d May 23, 2026
347f760
Invalid supabaseUrl when running npm run dev
Mayur-Shashidhar May 23, 2026
32ac7fc
fix: remove duplicate GraphTopicPage export
tp-shivha-shakthiy May 23, 2026
0adc241
fix: remove duplicate GraphTopicPage export
tp-shivha-shakthiy May 23, 2026
5197ea4
security: add HTTP security headers to next.config.mjs
advikdivekar May 23, 2026
7a3eed1
Merge branch 'PankajSingh34:main' into bfs-dynamic-start-node
tp-shivha-shakthiy May 23, 2026
adb4321
fix: correct dashboard streak counter and heatmap date handling (fixe…
ionfwsrijan May 23, 2026
f34614f
fix: restore shared graph animation component
tp-shivha-shakthiy May 23, 2026
ba70f22
fix: use UTC midnight for streak today reference (fixes timezone mism…
ionfwsrijan May 23, 2026
849c0d4
Merge pull request #102 from tp-shivha-s/bfs-dynamic-start-node
PankajSingh34 May 23, 2026
de41775
Merge pull request #137 from anujsharma8d/fix/move-to-top-button
PankajSingh34 May 23, 2026
565dd35
Merge pull request #146 from anujsharma8d/feat/back-to-home-clean
PankajSingh34 May 23, 2026
a2f7929
Merge branch 'main' into supabase
PankajSingh34 May 23, 2026
ecf5aeb
Merge pull request #153 from ionfwsrijan/fix/issue-141-dashboard-stre…
khushboo-khatoon May 23, 2026
ff78c91
Merge pull request #148 from Mayur-Shashidhar/supabase
PankajSingh34 May 23, 2026
f82be27
Delete .github/workflows/IssueLabeler.yml
PankajSingh34 May 23, 2026
9216797
Merge pull request #167 from PankajSingh34/PankajSingh34-patch-12
PankajSingh34 May 23, 2026
edfcdb1
Add AI issue labeler workflow
PankajSingh34 May 23, 2026
361ba41
Merge pull request #168 from PankajSingh34/PankajSingh34-patch-13
PankajSingh34 May 23, 2026
8547d88
Delete .github/workflows/labeler.yml
PankajSingh34 May 23, 2026
52057bc
Merge pull request #169 from PankajSingh34/PankajSingh34-patch-14
PankajSingh34 May 23, 2026
c779520
Add labeler configuration for issue labeling
PankajSingh34 May 23, 2026
06e9a59
Merge pull request #172 from PankajSingh34/PankajSingh34-patch-15
PankajSingh34 May 23, 2026
ce89ecf
Refactor labeler.yml regex patterns for labels
PankajSingh34 May 23, 2026
6d56426
Merge pull request #175 from PankajSingh34/PankajSingh34-patch-16
PankajSingh34 May 23, 2026
2c21c52
Update ai-issue-labeler.yml
PankajSingh34 May 23, 2026
bc52bf0
Merge pull request #176 from PankajSingh34/PankajSingh34-patch-17
PankajSingh34 May 23, 2026
be9e504
Update ai-issue-labeler.yml
PankajSingh34 May 23, 2026
e6fbf8a
Merge pull request #177 from PankajSingh34/PankajSingh34-patch-18
PankajSingh34 May 23, 2026
42b8efb
Update labeler.yml
PankajSingh34 May 23, 2026
ba56221
Merge pull request #179 from PankajSingh34/PankajSingh34-patch-19
PankajSingh34 May 23, 2026
3b83694
Simplify step name in issue labeling workflow
PankajSingh34 May 23, 2026
11c536c
Merge pull request #180 from PankajSingh34/PankajSingh34-patch-20
PankajSingh34 May 23, 2026
c96dfa3
Disable versioned regex in issue labeler workflow
PankajSingh34 May 23, 2026
a6a15f2
Merge pull request #182 from PankajSingh34/PankajSingh34-patch-21
PankajSingh34 May 23, 2026
f515866
Update issue labeler action to version 3.5
PankajSingh34 May 23, 2026
55aa20d
Merge pull request #185 from PankajSingh34/PankajSingh34-patch-22
PankajSingh34 May 23, 2026
e3b8adf
Update ai-issue-labeler.yml
PankajSingh34 May 23, 2026
4adc3cb
Merge pull request #187 from PankajSingh34/PankajSingh34-patch-23
PankajSingh34 May 23, 2026
ae9ad50
style: remove ArticleActions from all sorting visualizer pages to mat…
jyoti205 May 24, 2026
ba5777f
Merge pull request #192 from jyoti205/fix/remove-article-actions-sorting
PankajSingh34 May 24, 2026
5f6910f
Merge branch 'main' into security/http-security-headers
advikdivekar May 24, 2026
611d425
fix: resolve duplicate nextConfig merge conflict in next.config.mjs
advikdivekar May 24, 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
22 changes: 22 additions & 0 deletions .github/labeler.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
gssoc:approved:
- title: ".*"
- body: ".*"

mentor:PankajSingh34:
- title: ".*"

level:beginner:
- title: ".*beginner.*"
- body: ".*beginner.*"

type:bug:
- title: ".*bug.*"
- body: ".*bug.*"

type:feature:
- title: ".*feature.*"
- body: ".*feature.*"

type:docs:
- title: ".*docs.*"
- body: ".*docs.*"
24 changes: 24 additions & 0 deletions .github/workflows/ai-issue-labeler.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Smart Issue Labeler

on:
issues:
types: [opened, edited]

permissions:
issues: write
contents: read

jobs:
label-issues:
runs-on: ubuntu-latest

steps:
- name: Checkout repo # ← ADD THIS
uses: actions/checkout@v4

- name: Label issues
uses: github/issue-labeler@v3.4
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
configuration-path: .github/labeler.yml
enable-versioned-regex: 0
96 changes: 96 additions & 0 deletions .github/workflows/auto-approve-on-status.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
name: Conditional Auto Approve

on:
# जब भी किसी पीआर पर चेक्स (Status/Check Suite) पूरे हों
check_suite:
types: [completed]
status:

jobs:
check-and-approve:
runs-on: ubuntu-latest
if: github.repository == 'PankajSingh34/AlgoBuddy'
steps:
- name: Check Statuses and Approve
uses: actions/github-script@v7
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const { owner, repo } = context.repo;

// 1. इस इवेंट से जुड़े Pull Requests की लिस्ट निकालें
let pullRequests = [];
if (context.eventName === 'check_suite') {
pullRequests = context.payload.check_suite.pull_requests;
} else {
// status इवेंट के लिए SHA के ज़रिए PR ढूंढें
const sha = context.payload.sha;
const prs = await github.rest.pulls.list({ owner, repo, state: 'open' });
pullRequests = prs.data.filter(pr => pr.head.sha === sha);
}

if (pullRequests.length === 0) {
console.log("No open pull request found for this event.");
return;
}

const prNumber = pullRequests[0].number;
const prRef = pullRequests[0].head.sha;

// 2. इस Commit SHA के सारे कंबाइंड चेक्स/स्टेटस गेट करें
const statuses = await github.rest.repos.getCombinedStatusForRef({
owner,
repo,
ref: prRef,
});

const checkRuns = await github.rest.checks.listForRef({
owner,
repo,
ref: prRef,
});

// 3. फ़िल्टर लॉजिक: वर्सेल (Vercel) को छोड़कर बाकी चेक्स की जांच
let allOthersPassed = true;
let evaluatedChecksCount = 0;

// स्टेटस चेक करें (पुराने गिटहब स्टेटस के लिए)
for (const status of statuses.data.statuses) {
if (status.context.toLowerCase().includes('vercel')) {
continue; // Vercel को छोड़ दो
}
evaluatedChecksCount++;
if (status.state !== 'success') {
allOthersPassed = false;
}
}

// चेक रन्स देखें (GitHub Actions आदि के लिए)
for (const run of checkRuns.data.check_runs) {
if (run.name.toLowerCase().includes('vercel') || run.app?.slug?.toLowerCase().includes('vercel')) {
continue; // Vercel को छोड़ दो
}
// अगर कोई चेक अभी चल रहा है या पास नहीं हुआ है
if (run.status !== 'completed') {
allOthersPassed = false;
} else if (run.conclusion !== 'success' && run.conclusion !== 'neutral') {
allOthersPassed = false;
}
evaluatedChecksCount++;
}

console.log(`Evaluated ${evaluatedChecksCount} non-Vercel checks. Status: ${allOthersPassed}`);

// 4. अगर वर्सेल के अलावा बाकी सारे चेक्स पास हैं, तो APPROVE कर दो
if (allOthersPassed && evaluatedChecksCount > 0) {
await github.rest.pulls.createReview({
owner,
repo,
pull_number: prNumber,
event: 'APPROVE',
body: 'code looks good',
});
console.log(`PR #${prNumber} has been automatically approved with 'code looks good'!`);
} else {
console.log("Some non-Vercel checks are either pending or failed. Skipping auto-approval.");
}
14 changes: 12 additions & 2 deletions EnvExample.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,20 @@ EMAIL_USER=Your App Email
EMAIL_PASSWORD=Your Google App Password
NEXT_PUBLIC_GA_ID=Your Google Analytics ID

NEXT_PUBLIC_SUPABASE_URL=Your supabase Url
NEXT_PUBLIC_SUPABASE_ANON_KEY=Your Anon Key
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=Your Supabase anon/public key
NEXT_PUBLIC_TURNSTILE_SITE_KEY=Your Cloudfare Captcha Key

TURNSTILE_SECRET_KEY=Your Cloudfare backend route api key
SUPABASE_SERVICE_KEY=Your supabase service key
REVIEW_INBOX_EMAIL=Optional: fixed inbox for review emails (defaults to EMAIL_USER)

# AI Chatbot (AlgoBuddy Assistant)
OPENAI_API_KEY=Your OpenAI or OpenRouter API Key
# Upstash Redis — required in production to enforce rate limits across all
# serverless instances. Create a free database at https://console.upstash.com
# and copy the REST URL and token from the database dashboard.
# Without these, rate limiting falls back to a per-process in-memory store
# which is bypassed in serverless deployments (multiple Lambda instances).
UPSTASH_REDIS_REST_URL=https://your-database.upstash.io
UPSTASH_REDIS_REST_TOKEN=Your Upstash Redis REST token
13 changes: 12 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,9 @@ npm install

# 3. Set up environment variables
cp EnvExample.txt .env.local
# Fill in the values — see Environment Variables section below
# Fill in the values — especially NEXT_PUBLIC_SUPABASE_URL and
# NEXT_PUBLIC_SUPABASE_ANON_KEY. The app will start without them, but auth,
# dashboard, and middleware session refresh will be disabled until they are set.

# 4. Run the development server
npm run dev
Expand All @@ -131,6 +133,15 @@ Create a `.env.local` file at the root with the following keys (see `EnvExample.
| `NEXT_PUBLIC_TURNSTILE_SITE_KEY` | Cloudflare Turnstile site key |
| `TURNSTILE_SECRET_KEY` | Cloudflare Turnstile secret key |

Minimum required for Supabase auth and dashboard features:

- `NEXT_PUBLIC_SUPABASE_URL`
- `NEXT_PUBLIC_SUPABASE_ANON_KEY`

If those values are missing or invalid, the app now falls back to a safe no-op
Supabase client for startup, and middleware skips session refresh instead of
crashing the dev server.

Never commit `.env.local` to version control. It is listed in `.gitignore`.

---
Expand Down
Loading
Loading