Update website domain

This commit is contained in:
Juan Manzanero 2025-03-27 12:50:09 -06:00
parent 6928978684
commit 3a57df404e
20 changed files with 73 additions and 76 deletions

View File

@ -8,8 +8,7 @@ import tailwindcss from '@tailwindcss/vite';
// https://astro.build/config
export default defineConfig({
site: 'https://juancman.dev/',
site: 'https://juanmanzanero.com',
integrations: [
sitemap(),
react(),

View File

@ -1,14 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
xjMEZQiCxhYJKwYBBAHaRw8BAQdAKsyJoNrC9MIIih/2f+x2jFXe2EW+ufeN
lIOE0wUbcFbNK2NvbnRhY3RAanVhbmNtYW4uZGV2IDxjb250YWN0QGp1YW5j
bWFuLmRldj7CjAQQFgoAPgWCZQiCxgQLCQcICZCfsJTzxXuuVwMVCAoEFgAC
AQIZAQKbAwIeARYhBIDg/gtFKi+0hRG+G5+wlPPFe65XAAAnYAD/conTgzwr
wtm67uDfpSqauckqEEbiS3kCpVAMDptlc5kBAMp5qzA0RrHWwAtliwjckGta
Je8cmSNneuO2CmwF0yoHzjgEZQiCxhIKKwYBBAGXVQEFAQEHQM2jOtm0nD9e
Gj88A9FDxXir8tCxpM+g9FlxeTKrJuJ5AwEIB8J4BBgWCAAqBYJlCILGCZCf
sJTzxXuuVwKbDBYhBIDg/gtFKi+0hRG+G5+wlPPFe65XAABRXQEA56u9jKY5
ut2tlCJyauN9llxYwp45cyJNvUdoV/QaKhsBALN7snvKxUGqDoxyQi3LpEKE
uNjlRcRwNYo3k71qw3YK
=mkZ4
-----END PGP PUBLIC KEY BLOCK-----

View File

@ -0,0 +1,17 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
xjMEZ+WbSBYJKwYBBAHaRw8BAQdA2UkpseH3fRqNvy+BxT2R2LCvMCmGRC1C
Ge+G/MTc33DNNWNvbnRhY3RAanVhbm1hbnphbmVyby5jb20gPGNvbnRhY3RA
anVhbm1hbnphbmVyby5jb20+wsARBBMWCgCDBYJn5ZtIAwsJBwmQE+xKFEPw
d6lFFAAAAAAAHAAgc2FsdEBub3RhdGlvbnMub3BlbnBncGpzLm9yZzgw9UWU
tgBrYlE7QEuOIpn+TKFv3sXrL0ux2JtPMMTOAxUKCAQWAAIBAhkBApsDAh4B
FiEEvJO7on9lf8SXMHQQE+xKFEPwd6kAAOhvAP9yDtaYDgAPXG6c9vpNYHMO
e3rRjrQdczkTaW7xuvIv4AD9FRut4JK7KR7/6OQfr46ukX70r50CbDQGFSpB
CGEgJQvOOARn5ZtIEgorBgEEAZdVAQUBAQdAZPpVrg6u3Mr5HtUW1tX0PC0O
DmtM2xWEdbsIFLW4fX4DAQgHwr4EGBYKAHAFgmflm0gJkBPsShRD8HepRRQA
AAAAABwAIHNhbHRAbm90YXRpb25zLm9wZW5wZ3Bqcy5vcmfzpZREDOYf2/4r
4HTCHMAOtYtKfPreoia/HYX9c53YwQKbDBYhBLyTu6J/ZX/ElzB0EBPsShRD
8HepAAAsPwD8C74TC7XJvpv+QxIjDeYhqeXTKcWZeYnLz/i7psALS/IA/iKA
9ZAk6c1v2OGM5t2PfHfIjxD7JWGq/PY0Gq4wKJYJ
=xo3U
-----END PGP PUBLIC KEY BLOCK-----

View File

@ -35,12 +35,12 @@ export default function Footer({ lang }: Props) {
</section>
<section className='w-max mx-auto flex items-center gap-12'>
<VerticalLinkButton
href={`https://juancman.dev/${lang === 'es' ? 'es/' : ''}feed.xml`}
href={`https://juanmanzanero.com/${lang === 'es' ? 'es/' : ''}feed.xml`}
>
<RssIcon className='w-6' />
RSS feed
</VerticalLinkButton>
<VerticalLinkButton href='https://git.juancman.dev/juancmandev/website'>
<VerticalLinkButton href='https://git.juanmanzanero.com/juanmanzanero/website'>
<Code className='w-6' />
Source Code
</VerticalLinkButton>

View File

@ -46,7 +46,7 @@ const { lang } = Astro.props;
decoding='sync'
fetchpriority='high'
class='w-auto h-auto aspect-square'
alt='juancmandev logo'
alt='Juan Manzanero logo'
/>
</LinkButton>
</section>

View File

@ -71,10 +71,10 @@ There are many options:
### Adding Feeds
Now you need to search for the RSS URL on your favorite website, like
[this one](https://juancman.dev/rss.xml)!
[this one](https://juanmanzanero.com/feed.xml)!
```
https://juancman.dev/rss.xml
https://juanmanzanero.com/rss.xml
```
If you open it, you'll get a weird page with code similar to HTML.
@ -108,7 +108,7 @@ https://youtube.com/feeds/videos.xml?channel_id=[CHANNEL ID]
### My Favorite Feeds
- [juancman.dev (obviously!)](https://www.juancman.dev/rss.xml)
- [juanmanzanero.com (obviously!)](https://juanmanzanero.com/feed.xml)
- [Astronomic Picture of the Day (apod)](https://apod.com/feed.rss)
- [Earth Science Picture of the Day (epod)](https://feeds2.feedburner.com/EarthSciencePictureoftheDay)
- [Erick Murphy (cool guy)](https://ericmurphy.xyz/index.xml)

View File

@ -12,7 +12,7 @@ rss: true
![Banner with the tech stack used in this tutorial, Next.js, TailwindCSS, shadcn/ui, Prisma, PostgreSQL and Auth.js](@/assets/blog/build-a-fullstack-app/banner.png)
_Tech stack used in this tutorial_
[GitHub repo](https://github.com/juancmandev/fullstack-app)
[GitHub repo](https://github.com/juanmanzanerod/fullstack-app)
## Content

View File

@ -12,7 +12,7 @@ rss: true
![Next Intl Blog Template banner](@/assets/blog/next-intl-blog-template/banner.png)
_Next Intl Blog Template banner_
[GitHub](https://github.com/juancmandev/next-intl-blog-template)
[GitHub](https://github.com/juanmanzanerod/next-intl-blog-template)
[Website](https://next-intl-blog-template.vercel.app/en)
@ -145,4 +145,4 @@ export default async function Page(props: TPage) {
}
```
[You can fork this template here](https://github.com/juancmandev/next-intl-blog-template)
[You can fork this template here](https://github.com/juanmanzanerod/next-intl-blog-template)

View File

@ -12,7 +12,7 @@ rss: true
![Banner con el teck stack usado en este tutorial, Next.js, TailwindCSS, shadcn/ui, Prisma, PostgreSQL y Auth.js.](@/assets/blog/build-a-fullstack-app/banner.png)
_Tech stack usado en este tutorial_
[GitHub repo](https://github.com/juancmandev/fullstack-app)
[GitHub repo](https://github.com/juanmanzanerod/fullstack-app)
# Contenido
@ -1198,4 +1198,3 @@ Como puedes ver, crear una app fullstack con Next.js es muy fácil.
Por supuesto, se puede mejorar, agregando validación del lado del servidor para los inputs, agregando paginación para los posts en el home, etc.
Si quieres que trabajemos juntos, envíame un correo a [contact@juancman.dev](mailto:contact@juancman.dev).

View File

@ -12,7 +12,7 @@ rss: true
![Next Intl Blog Template banner](@/assets/blog/next-intl-blog-template/banner.png)
_Next Intl Blog Template banner_
[GitHub](https://github.com/juancmandev/next-intl-blog-template)
[GitHub](https://github.com/juanmanzanerod/next-intl-blog-template)
[Website](https://next-intl-blog-template.vercel.app/en)
@ -35,9 +35,9 @@ Este template es una extensión de [next-intl](https://next-intl-docs.vercel.app
Puedes agregar o remover locales en el archivo `src/lang/locales.ts`.
```ts title="src/lang/locales.ts"
export type locales = "en" | "es";
export type locales = 'en' | 'es';
export const localesList: locales[] = ["en", "es"];
export const localesList: locales[] = ['en', 'es'];
```
Solo agrega o remueve un locale de la constante `locales`, y agrega o remueve el locale de la lista.
@ -48,7 +48,7 @@ La lista es usada para la generación de rutas estáticas en
`src/app/[locale]/layout.tsx`.
```ts title="src/app/[locale]/layout.tsx"
import { localesList } from "@/lang/locales";
import { localesList } from '@/lang/locales';
export function generateStaticParams() {
return localesList.map((locale) => ({ locale }));
@ -61,7 +61,7 @@ Recuerda actualizar el matcher en `src/middleware.ts`.
//...
export const config = {
matcher: ["/", "/(en|es)/:path*"],
matcher: ['/', '/(en|es)/:path*'],
};
```
@ -76,15 +76,15 @@ Dentro crea el archivo .mdx con un nombre único, el nombre será usado como slu
Para crear una sección de blog, usarás la función _getAllContent_ en tu ruta, por ejemplo: `src/app/[locale]/blog/[slug]/page.tsx`.
```tsx title="src/app/[locale]/blog/[slug]/page.tsx"
import { Mdx } from "@/components";
import { TParamsLocale, TPage, TSlugLang } from "@/types";
import { Metadata } from "next";
import { getAllContent, getContent } from "@/utils/getContent";
import { Mdx } from '@/components';
import { TParamsLocale, TPage, TSlugLang } from '@/types';
import { Metadata } from 'next';
import { getAllContent, getContent } from '@/utils/getContent';
export async function generateStaticParams(
props: TParamsLocale,
props: TParamsLocale
): Promise<TSlugLang[]> {
const blogs = await getAllContent(props.params.locale, "blog");
const blogs = await getAllContent(props.params.locale, 'blog');
if (!blogs) return [];
@ -105,7 +105,7 @@ Puedes obtener la metadata del archivo `.mdx` también.
//...
export async function generateMetadata(props: TPage): Promise<Metadata> {
const blog = await getContent(props.params.locale, "blog", props.params.slug);
const blog = await getContent(props.params.locale, 'blog', props.params.slug);
if (!blog) return {};
@ -124,7 +124,7 @@ Entonces, renderiza el contenido usando el componente _Mdx_.
//...
export default async function Page(props: TPage) {
const post = await getContent(props.params.locale, "blog", props.params.slug);
const post = await getContent(props.params.locale, 'blog', props.params.slug);
if (!post) return null;
@ -132,8 +132,4 @@ export default async function Page(props: TPage) {
}
```
[Puedes hacer un fork de este template aquí](https://github.com/juancmandev/next-intl-blog-template)
## Contacto
Si te interesa **trabajar juntos** en un website con internacionalización con Next.js, envíame un correo a [contact@juancman.dev](mailto:contact@juancman.dev)
[Puedes hacer un fork de este template aquí](https://github.com/juanmanzanerod/next-intl-blog-template)

View File

@ -67,10 +67,10 @@ mi opción favorita como ~~Pecador~~ usuario de Apple
### Agregando Feeds
Ahora debes buscar por el link RSS de tu website favorito, ¡[como este](https://juancman.dev/es/rss.xml)!
Ahora debes buscar por el link RSS de tu website favorito, ¡[como este](https://juanmanzanero.com/es/feed.xml)!
```
https://juancman.dev/es/rss.xml
https://juanmanzanero.com/es/feed.xml
```
Si lo abres, verás una página rara con código similar a HTML.
@ -102,7 +102,7 @@ https://youtube.com/feeds/videos.xml?channel_id=[CHANNEL ID]
### Mis Feeds Favoritos
- [juancman.dev (¡obviamente!)](https://www.juancman.dev/es/rss.xml)
- [juanmanzanero.com (¡obviamente!)](https://juanmanzanero.com/es/feed.xml)
- [Astronomic Picture of the Day (apod)](https://apod.com/feed.rss)
- [Earth Science Picture of the Day (epod)](https://feeds2.feedburner.com/EarthSciencePictureoftheDay)
- [Erick Murphy](https://ericmurphy.xyz/index.xml)

View File

@ -13,10 +13,10 @@ Just change `[at]` for `@` and `[dot]` for `.`. This is for preventing web
crawlers from getting my email:
```
contact[at]juancman[dot]dev
contact[at]juanmanzanero[dot]com
```
You may [download my PGP key](/publickey.contact@juancman.dev-80e0fe0b452a2fb48511be1b9fb094f3c57bae57.asc) to validate my emails.
You may [download my PGP key](/publickey.contact@juanmanzanero.com-bc93bba27f657fc49730741013ec4a1443f077a9.asc) to validate my emails.
## Social media
@ -26,5 +26,5 @@ If you want to talk about contracting me, you may check my career:
You may check my GitHub, but I have also my own Gitea instance:
- [GitHub](https://github.com/juancmandev)
- [Gitea](https://git.juancman.dev/juancmandev)
- [GitHub](https://github.com/juanmanzanerod)
- [Gitea](https://git.juanmanzanero.com/juanmanzanero)

View File

@ -13,18 +13,18 @@ Solo cambia `[at]` por `@` y `[dot]` por `.`. Esto es para evitar que web
crawlers obtengan mi email.
```
contact[at]juancman[dot]dev
contact[at]juanmanzanero[dot]com
```
Puedes [descargar mi PGP key](/publickey.contact@juancman.dev-80e0fe0b452a2fb48511be1b9fb094f3c57bae57.asc) para validar mis emails.
Puedes [descargar mi PGP key](/publickey.contact@juanmanzanero.com-bc93bba27f657fc49730741013ec4a1443f077a9.asc) para validar mis emails.
## Redes sociales
Si quieres hablar sobre contratarme, puedes revisar mi carrera:
- [LinkedIn](https://www.linkedin.com/in/juancmandev)
- [LinkedIn](https://www.linkedin.com/in/juanmanzanerod)
Puedes revisar mi GitHub, aunque igual tengo mi propia instancia de Gitea:
- [GitHub](https://github.com/juancmandev)
- [Gitea](https://git.juancman.dev/juancmandev)
- [GitHub](https://github.com/juanmanzanerod)
- [Gitea](https://git.juanmanzanero.com/juanmanzanero)

View File

@ -35,7 +35,7 @@ const { title, description } = Astro.props;
lang === 'en' && (
<link
rel='alternate'
title='juancmandev'
title='Juan Manzanero'
type='application/rss+xml'
href={new URL('feed.xml', Astro.site)}
/>
@ -45,7 +45,7 @@ const { title, description } = Astro.props;
lang === 'es' && (
<link
rel='alternate'
title='juancmandev'
title='Juan Manzanero'
type='application/rss+xml'
href={new URL('feed.xml', `${Astro.site}/es/`)}
/>

View File

@ -69,17 +69,17 @@ export async function GET(context: any) {
return rss({
xmlns: { atom: 'http://www.w3.org/2005/Atom' },
title: 'juancmandev',
title: 'Juan Manzanero',
description: 'Bienvenido a mi dominio, extraño.',
site: `${context.site}es/`,
customData: [
'<language>es-mx</language>',
`<image>
<url>https://juancman.dev/logo.png</url>
<title>juancmandev</title>
<link>https://juancman.dev</link>
<url>${context.site}/logo.png</url>
<title>Juan Manzanero</title>
<link>${context.site}</link>
</image>`,
`<atom:link href="${context.site}es/feed.xml" rel="self" type="application/rss+xml"/>`,
`<atom:link href="${context.site}/es/feed.xml" rel="self" type="application/rss+xml"/>`,
].join(''),
items,
trailingSlash: false,

View File

@ -7,9 +7,9 @@ import { sortContentByDate } from '@/utils/sorts';
import { getCollection } from 'astro:content';
const pageData = {
title: 'juancmandev',
title: 'Juan Manzanero',
description:
'Bienvenido a mi dominio, extraño. Soy juancmandev; Desarrollador Web, entusiasta de Linux, y defensor de la privacidad.',
'Bienvenido a mi dominio, extraño. Soy Juan Manzanero; Desarrollador Web, entusiasta de Linux, y defensor de la privacidad.',
};
const allPosts = await getCollection('blog', ({ data }) => data.draft !== true);
@ -33,7 +33,7 @@ const lang = getLangFromUrl(Astro.url);
<div class='prose prose-invert max-w-3xl mx-auto'>
<h1 class='text-primary'>Bienvenido a mi dominio, extraño.</h1>
<p>
Soy <strong class='text-primary'>juancmandev</strong>; <strong
Soy <strong class='text-primary'>Juan Manzanero</strong>; <strong
>Desarrollador Web</strong
>, entusiasta de <strong>Linux</strong> y defensor de la <strong
>privacidad.</strong

View File

@ -69,17 +69,17 @@ export async function GET(context: any) {
return rss({
xmlns: { atom: 'http://www.w3.org/2005/Atom' },
title: 'juancmandev',
title: 'Juan Manzanero',
description: 'Welcome to my domain, stranger.',
site: context.site,
customData: [
'<language>en-us</language>',
`<image>
<url>https://juancman.dev/logo.png</url>
<title>juancmandev</title>
<link>https://juancman.dev</link>
<url>${context.site}/logo.png</url>
<title>Juan Manzanero</title>
<link>${context.site}</link>
</image>`,
`<atom:link href="${context.site}feed.xml" rel="self" type="application/rss+xml"/>`,
`<atom:link href="${context.site}/feed.xml" rel="self" type="application/rss+xml"/>`,
].join(''),
items,
trailingSlash: false,

View File

@ -7,9 +7,9 @@ import { getLangFromUrl } from '@/i18n/utils';
import PostItemList from '@/components/post-items-list';
const pageData = {
title: 'juancmandev',
title: 'Juan Manzanero',
description:
'Welcome to my domain, stranger. I am juancmandev; Web Developer, Linux enthusiast, and privacy defender.',
'Welcome to my domain, stranger. I am Juan Manzanero; Web Developer, Linux enthusiast, and privacy defender.',
};
const allPosts = await getCollection('blog', ({ data }) => data.draft !== true);

View File

@ -3,7 +3,7 @@ import MicroblogItem from '@/components/microblog-item.astro';
import Layout from '@/layouts/Layout.astro';
import { createServerClient } from '@/utils/pocketbase';
const pb = createServerClient('https://pb.juancman.dev/');
const pb = createServerClient('https://pb.juanmanzanero.com/');
const data = await pb.collection('microblogs').getFullList({
expand: 'tags',
sort: '-published',

View File

@ -4,7 +4,7 @@ const robotsTxt = `
User-agent: *
Allow: /
Sitemap: ${new URL('sitemap-index.xml', 'https://juancman.dev').href}
Sitemap: ${new URL('sitemap-index.xml', 'https://juanmanzanero.com').href}
`.trim();
export const GET: APIRoute = () => {