Skip to content

Commit 82f6091

Browse files
NiconiKimgFrasquito3LucaTvlcarlex74
authored
Release 1.0.7 (#208)
* fix: avoid duplicated Authorization header setup * refactor: extract PageLoader component to a standalone file * refactor: replace professor helper functions with Professor model integration * refactor: clean up JoinInstitutionModal and Professor model, remove unused imports and comments Co-authored-by: Frasquito3 <Frasquito3@users.noreply.github.com> * fix: update qs dependency to version 6.14.1 in package.json and pnpm-lock.yaml * Feat: dynamic seo meta tags (#207) * feat: implement dynamic SEO meta tags * feat: add sitemap.xml and robots.txt for SEO * feat: add on-page SEO optimization with structured data * chore: update branding to Up-Skill * chore: update react-router-dom to fix security vulnerabilities --------- Co-authored-by: Franco Zariaga <francozariaga.zariaga@gmail.com> Co-authored-by: LucaTvl <lucatrincavell@frro.utn.edu.ar> Co-authored-by: Frasquito3 <Frasquito3@users.noreply.github.com> Co-authored-by: carlex74 <r.icardogugliermino@gmail.com>
1 parent 1dd7f27 commit 82f6091

34 files changed

Lines changed: 420 additions & 196 deletions

index.html

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
<!doctype html>
2-
<html lang="en">
2+
<html lang="es">
33

44
<head>
55
<meta charset="UTF-8" />
66
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
77
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
8-
9-
<title>UpSkill</title>
10-
8+
9+
<title>Up-Skill - Plataforma de Cursos Online</title>
10+
<meta name="description" content="Aprende nuevas habilidades con cursos online de calidad. Programación, desarrollo web y más con profesores expertos." />
11+
1112
<link rel="preconnect" href="https://fonts.googleapis.com">
1213
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
1314
<link

package.json

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
"scripts": {
77
"dev": "vite",
88
"build": "tsc -b && vite build",
9+
"prebuild": "node scripts/generate-sitemap.js",
910
"lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
1011
"preview": "vite preview",
1112
"tailwind:init": "tailwindcss init -p",
@@ -19,7 +20,8 @@
1920
"build-storybook": "storybook build",
2021
"cy:run": "cypress run",
2122
"cy:open": "cypress open",
22-
"test:e2e:local": "start-server-and-test preview http://localhost:4173 cy:run"
23+
"test:e2e:local": "start-server-and-test preview http://localhost:4173 cy:run",
24+
"sitemap": "node scripts/generate-sitemap.js"
2325
},
2426
"dependencies": {
2527
"@blocknote/core": "^0.37.0",
@@ -33,9 +35,10 @@
3335
"lucide-react": "^0.534.0",
3436
"react": "^19.1.0",
3537
"react-dom": "^19.1.0",
38+
"react-helmet-async": "^2.0.5",
3639
"react-hook-form": "^7.62.0",
3740
"react-hot-toast": "^2.6.0",
38-
"react-router-dom": "^7.7.0",
41+
"react-router-dom": "^7.12.0",
3942
"recharts": "^3.1.2",
4043
"tailwind-merge": "^3.3.1",
4144
"three": "^0.179.1",
@@ -82,7 +85,8 @@
8285
"pnpm": {
8386
"overrides": {
8487
"glob": "^10.5.0",
85-
"systeminformation": ">=5.27.14"
88+
"systeminformation": ">=5.27.14",
89+
"qs": ">=6.14.1"
8690
}
8791
},
8892
"packageManager": "pnpm@10.10.0+sha512.d615db246fe70f25dcfea6d8d73dee782ce23e2245e3c4f6f888249fb568149318637dca73c2c5c8ef2a4ca0d5657fb9567188bfab47f566d1ee6ce987815c39"

pnpm-lock.yaml

Lines changed: 54 additions & 13 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

public/img/og-default.png

1.01 MB
Loading

public/robots.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
User-agent: *
2+
Allow: /
3+
4+
Sitemap: https://up-skill.app/sitemap.xml

public/sitemap.xml

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
3+
xmlns:xhtml="http://www.w3.org/1999/xhtml">
4+
5+
<url>
6+
<loc>https://up-skill.app/</loc>
7+
<lastmod>2026-01-13</lastmod>
8+
<changefreq>weekly</changefreq>
9+
<priority>1.0</priority>
10+
</url>
11+
<url>
12+
<loc>https://up-skill.app/about</loc>
13+
<lastmod>2026-01-13</lastmod>
14+
<changefreq>monthly</changefreq>
15+
<priority>0.8</priority>
16+
</url>
17+
<url>
18+
<loc>https://up-skill.app/faq</loc>
19+
<lastmod>2026-01-13</lastmod>
20+
<changefreq>monthly</changefreq>
21+
<priority>0.7</priority>
22+
</url>
23+
<url>
24+
<loc>https://up-skill.app/contact</loc>
25+
<lastmod>2026-01-13</lastmod>
26+
<changefreq>monthly</changefreq>
27+
<priority>0.7</priority>
28+
</url>
29+
<url>
30+
<loc>https://up-skill.app/courses</loc>
31+
<lastmod>2026-01-13</lastmod>
32+
<changefreq>daily</changefreq>
33+
<priority>0.9</priority>
34+
</url>
35+
<url>
36+
<loc>https://up-skill.app/login</loc>
37+
<lastmod>2026-01-13</lastmod>
38+
<changefreq>yearly</changefreq>
39+
<priority>0.5</priority>
40+
</url>
41+
<url>
42+
<loc>https://up-skill.app/register</loc>
43+
<lastmod>2026-01-13</lastmod>
44+
<changefreq>yearly</changefreq>
45+
<priority>0.5</priority>
46+
</url>
47+
</urlset>

scripts/generate-sitemap.js

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
#!/usr/bin/env node
2+
3+
import fs from 'fs';
4+
import path from 'path';
5+
import { fileURLToPath } from 'url';
6+
7+
const __filename = fileURLToPath(import.meta.url);
8+
const __dirname = path.dirname(__filename);
9+
10+
const baseUrl = 'https://up-skill.app';
11+
const currentDate = new Date().toISOString().split('T')[0];
12+
13+
const staticRoutes = [
14+
{ path: '/', priority: '1.0', changefreq: 'weekly' },
15+
{ path: '/about', priority: '0.8', changefreq: 'monthly' },
16+
{ path: '/faq', priority: '0.7', changefreq: 'monthly' },
17+
{ path: '/contact', priority: '0.7', changefreq: 'monthly' },
18+
{ path: '/courses', priority: '0.9', changefreq: 'daily' },
19+
{ path: '/login', priority: '0.5', changefreq: 'yearly' },
20+
{ path: '/register', priority: '0.5', changefreq: 'yearly' },
21+
];
22+
23+
const generateSitemap = () => {
24+
const urls = staticRoutes.map(route => `
25+
<url>
26+
<loc>${baseUrl}${route.path}</loc>
27+
<lastmod>${currentDate}</lastmod>
28+
<changefreq>${route.changefreq}</changefreq>
29+
<priority>${route.priority}</priority>
30+
</url>`).join('');
31+
32+
const sitemap = `<?xml version="1.0" encoding="UTF-8"?>
33+
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
34+
xmlns:xhtml="http://www.w3.org/1999/xhtml">
35+
${urls}
36+
</urlset>`;
37+
38+
const sitemapPath = path.join(__dirname, '../public/sitemap.xml');
39+
fs.writeFileSync(sitemapPath, sitemap.trim());
40+
console.log('✓ Sitemap generated successfully at public/sitemap.xml');
41+
};
42+
43+
generateSitemap();

src/api/apiClient.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,6 @@ apiClient.interceptors.response.use(
8282
const newToken = data.data.token;
8383

8484
localStorage.setItem(TOKEN_STORAGE_KEY, newToken);
85-
apiClient.defaults.headers.common['Authorization'] = `Bearer ${newToken}`;
8685

8786
processQueue(null, newToken);
8887

0 commit comments

Comments
 (0)