Portulan is a project that lets you generate a website to showcase all of your services. It was originally created for homelabs but you may use it any way you can think of.
It's actually the source code for all the Oblic Parallels portals.
I would recommend to use only SVGs in your image links if possible. If it's not possible and that you want to optimize the loading time, you should use the lazy image loading.
> [!WARNING]
> This feature is not implemented yet and you'll have to go manually inside the `src/components/` folder to make modifications.
In order to use the lazy image loading you'll need to allow your source domain inside `astro.config.mjs` like following
```js
import { defineConfig } from 'astro/config';
export default defineConfig({
image: {
// Add your domain
domains: ['resources.example.com'],
},
});
```
Then for each component that uses a raster image (PNG, JPG...) use the following syntax
```astro
---
import { Image } from 'astro:assets';
const { title, icon, ... } = Astro.props;
---
<Image
src={icon}
alt={title}
width={160}
height={160}
quality="high"
format="webp"
loading="eager"
/>
```
Note that in this case, it would be a good idea to store your images in the assets folder an to access them using their relative path to let astro generate what it needs to fully take advantage of this feature.
There is a CI/CD pipeline in `.forgejo/workflows/deploy.yaml` that lets you automatically build and deploy the website. It's actually configured to do so with Oblic Parallels but you can easily use it to do the same thing on your own server.
As it takes time I don't really want to document it right now but if you're interested, feel free to contact me or to open an issue and I will probably do it.