Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
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
1 change: 1 addition & 0 deletions db/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
data/*
5 changes: 5 additions & 0 deletions platforms/blabsy/public/logo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
11 changes: 3 additions & 8 deletions platforms/blabsy/public/site.webmanifest
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,9 @@
"orientation": "portrait",
"icons": [
{
"src": "/logo192.png",
"type": "image/png",
"sizes": "192x192"
},
{
"src": "/logo512.png",
"type": "image/png",
"sizes": "512x512"
"src": "/logo.svg",
"type": "image/svg+xml",
"sizes": "any"
Comment on lines +12 to +14
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Good move to SVG; add maskable purpose and consider PNG fallbacks for iOS

SVG with sizes "any" is fine for many platforms. Add purpose "any maskable" for better Android adaptive icons, and consider providing PNG fallbacks (192x192, 512x512) plus an apple-touch-icon for iOS (iOS ignores Web Manifest icons).

         {
             "src": "/logo.svg",
             "type": "image/svg+xml",
-            "sizes": "any"
+            "sizes": "any",
+            "purpose": "any maskable"
         }

Optional: add additional PNG entries and an <link rel="apple-touch-icon" ...> in the HTML head.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"src": "/logo.svg",
"type": "image/svg+xml",
"sizes": "any"
{
"src": "/logo.svg",
"type": "image/svg+xml",
"sizes": "any",
"purpose": "any maskable"
}
🤖 Prompt for AI Agents
In platforms/blabsy/public/site.webmanifest around lines 12 to 14, the SVG icon
entry only declares "type" and "sizes" and should be expanded for better
platform support: add "purpose": "any maskable" to the SVG entry, and add PNG
fallback entries (e.g., 192x192 and 512x512 with "type": "image/png" and
corresponding "sizes") to the manifest; additionally, add an apple-touch-icon
link tag in the HTML head pointing to a PNG (e.g., 180x180) because iOS ignores
webmanifest icons.

}
]
}
2 changes: 1 addition & 1 deletion platforms/blabsy/src/components/common/app-head.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ export function AppHead(): JSX.Element {
<Head>
<title>Blabsy</title>
<meta name='og:title' content='Blabsy' />
<link rel='icon' href='/favicon.ico' />
<link rel='icon' href='/logo.svg' />
<link rel='manifest' href='/site.webmanifest' key='site-manifest' />
<meta name='twitter:site' content='@ccrsxx' />
<meta name='twitter:card' content='summary_large_image' />
Expand Down
13 changes: 9 additions & 4 deletions platforms/blabsy/src/components/ui/custom-icon.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,15 @@ export function CustomIcon({

function TwitterIcon({ className }: IconProps): JSX.Element {
return (
<svg className={cn('fill-current', className)} viewBox='0 0 24 24'>
<g>
<path d='M23.643 4.937c-.835.37-1.732.62-2.675.733.962-.576 1.7-1.49 2.048-2.578-.9.534-1.897.922-2.958 1.13-.85-.904-2.06-1.47-3.4-1.47-2.572 0-4.658 2.086-4.658 4.66 0 .364.042.718.12 1.06-3.873-.195-7.304-2.05-9.602-4.868-.4.69-.63 1.49-.63 2.342 0 1.616.823 3.043 2.072 3.878-.764-.025-1.482-.234-2.11-.583v.06c0 2.257 1.605 4.14 3.737 4.568-.392.106-.803.162-1.227.162-.3 0-.593-.028-.877-.082.593 1.85 2.313 3.198 4.352 3.234-1.595 1.25-3.604 1.995-5.786 1.995-.376 0-.747-.022-1.112-.065 2.062 1.323 4.51 2.093 7.14 2.093 8.57 0 13.255-7.098 13.255-13.254 0-.2-.005-.402-.014-.602.91-.658 1.7-1.477 2.323-2.41z' />
</g>
// <svg className={cn('fill-current', className)} viewBox='0 0 24 24'>
// <g>
// <path d='M23.643 4.937c-.835.37-1.732.62-2.675.733.962-.576 1.7-1.49 2.048-2.578-.9.534-1.897.922-2.958 1.13-.85-.904-2.06-1.47-3.4-1.47-2.572 0-4.658 2.086-4.658 4.66 0 .364.042.718.12 1.06-3.873-.195-7.304-2.05-9.602-4.868-.4.69-.63 1.49-.63 2.342 0 1.616.823 3.043 2.072 3.878-.764-.025-1.482-.234-2.11-.583v.06c0 2.257 1.605 4.14 3.737 4.568-.392.106-.803.162-1.227.162-.3 0-.593-.028-.877-.082.593 1.85 2.313 3.198 4.352 3.234-1.595 1.25-3.604 1.995-5.786 1.995-.376 0-.747-.022-1.112-.065 2.062 1.323 4.51 2.093 7.14 2.093 8.57 0 13.255-7.098 13.255-13.254 0-.2-.005-.402-.014-.602.91-.658 1.7-1.477 2.323-2.41z' />
// </g>
// </svg>
<svg width="80" height="80" viewBox="0 0 80 80" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M34.836 12.9083C37.0226 12.8222 39.2344 12.8873 41.423 12.8875C43.3219 12.8876 45.2453 12.8194 47.1383 12.9838C50.5387 13.2904 53.7949 14.5012 56.5695 16.4904C60.45 19.3003 63.0617 23.5308 63.8351 28.259C64.3351 31.4927 63.9191 35.6582 61.9402 38.3641C63.7367 40.8851 64.5262 43.9437 64.5387 47.0164C64.5555 51.289 62.8797 55.2633 59.8656 58.289C57.241 60.9043 53.7863 62.5215 50.0973 62.8621C48.6848 63.0043 47.273 62.973 45.8555 62.9726L40.9961 62.9758L31.5771 63.0039C30.8052 63.0078 28.66 62.9105 28.0215 63.0699C27.407 63.2234 26.6751 63.7101 26.0909 64.0008L20.0873 67.0269C19.3046 67.4187 18.53 67.8848 17.7233 68.2207C17.4619 68.3293 17.1989 68.4027 16.9148 68.4183C16.3079 68.4492 15.7144 68.2324 15.2705 67.8172C14.8262 67.4086 14.6761 66.9172 14.6563 66.3324C14.6275 65.4769 14.6517 64.6125 14.6526 63.7558L14.6548 59.0043L14.6547 44.3605L14.6555 34.5339C14.6532 33.4087 14.6613 32.2834 14.6801 31.1583C14.6953 29.3349 14.7196 27.4792 15.1042 25.6878C15.7005 22.9323 17.0394 20.3926 18.9759 18.3438C21.7584 15.3642 25.5334 13.5036 29.5912 13.1116C31.3202 12.9296 33.0977 12.9633 34.836 12.9083Z" fill="#1E4061"/>
<path d="M31.7065 18.4548C32.5829 18.4183 33.4662 18.44 34.3436 18.4404L38.838 18.4405H42.9684C44.8731 18.4419 46.816 18.4216 48.6809 18.8631C50.4754 19.2841 52.1535 20.0987 53.5946 21.248C56.3117 23.3816 58.2059 26.4498 58.6125 29.9081C58.8981 32.1503 58.4129 34.423 57.2367 36.3533C56.802 37.0592 56.2856 37.6973 55.7746 38.3483C57.9145 40.591 59.3289 43.1566 59.3379 46.3398C59.368 49.4 58.1774 52.3457 56.0297 54.5254C54.1492 56.4074 51.6801 57.4215 49.0516 57.648C48.0735 57.7324 47.0848 57.709 46.1035 57.7109L33.6869 57.7117C32.645 57.7125 27.7914 57.6168 27.091 57.8496C26.4799 58.0523 25.4324 58.7516 24.8205 59.1066L19.8016 62.041L19.8019 37.8807L19.8031 31.4123C19.8035 30.0114 19.6929 28.6029 19.9365 27.216C20.2664 25.2862 21.1395 23.4903 22.4535 22.0389C24.0567 20.2741 26.2243 19.0313 28.5918 18.6717C29.6188 18.5157 30.6702 18.5019 31.7065 18.4548Z" fill="#499AE9"/>
<path d="M27.0325 29.0951C27.0324 26.0622 29.4908 23.6034 32.5237 23.6029L32.5926 23.6029L38.1528 23.6022L41.2324 23.601C42.1219 23.6009 43.0102 23.5807 43.8938 23.7074C45.0645 23.8751 46.1727 24.2299 47.1821 24.8545C48.7301 25.797 49.8289 27.3273 50.2274 29.0951C50.6164 30.7664 50.359 32.7489 49.4332 34.2116C48.1098 36.3035 46.4742 36.9319 44.1742 37.4617C44.4739 37.4925 44.7707 37.5087 45.0684 37.5597C47.2563 37.9344 49.3188 39.0645 50.6078 40.8969C51.7852 42.5703 52.1813 44.5922 51.827 46.5977C51.5653 47.8887 50.9113 49.3676 49.9684 50.316C48.8559 51.4348 47.4977 52.1016 45.9606 52.4316C44.7145 52.6992 43.4645 52.659 42.1989 52.6586L38.7731 52.6563L27.0325 52.6574L27.0324 38.1306L27.0325 29.0951Z" fill="#FCFCFC"/>
</svg>
);
}
Expand Down
3 changes: 3 additions & 0 deletions platforms/eVoting/src/app/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ import "./globals.css";
export const metadata: Metadata = {
title: "eVoting Platform",
description: "A platform for creating and managing votes",
icons: {
icon: "/Logo.png"
}
};

export default function RootLayout({
Expand Down
Binary file added platforms/group-charter-manager/public/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions platforms/group-charter-manager/src/app/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@ const inter = Inter({ subsets: ["latin"] });
export const metadata: Metadata = {
title: "Group Charter Manager",
description: "Manage your group charters and memberships",
icons: {
icon: "/logo.png"
}
};

export default function RootLayout({
Expand Down
2 changes: 1 addition & 1 deletion platforms/pictique/src/app.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="icon" href="%sveltekit.assets%/favicon.png" />
<link rel="icon" href="%sveltekit.assets%/Logo.svg" />
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Normalize asset case and add type/sizes for SVG

The path uses an uppercase L (Logo.svg) whereas other apps use lowercase (logo.svg). On case-sensitive filesystems this can 404 if the filename differs. Also add type/sizes.

-		<link rel="icon" href="%sveltekit.assets%/Logo.svg" />
+		<link rel="icon" href="%sveltekit.assets%/logo.svg" type="image/svg+xml" sizes="any" />

Run to verify asset existence and references:


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "References in pictique app.html:"
rg -n 'Logo\.svg|logo\.svg' platforms/pictique/src/app.html || true

echo ""
echo "Matching files in repo (case-insensitive):"
fd -a -i 'logo.svg' || true
fd -a -i 'Logo.svg' || true

Length of output: 821


Add SVG favicon type and sizes (retain existing filename casing)

Verified that the pictique app’s static assets use Logo.svg (uppercase “L”), so switching to logo.svg would break the link unless you also rename the files. Instead, update the <link> tag to include type and sizes, keeping the existing filename:

– platforms/pictique/src/app.html (line 5)

-		<link rel="icon" href="%sveltekit.assets%/Logo.svg" />
+		<link rel="icon" href="%sveltekit.assets%/Logo.svg" type="image/svg+xml" sizes="any" />

If you’d rather normalize to lowercase across all apps, you’ll need to:

  • Rename platforms/pictique/static/Logo.svglogo.svg
  • Rename platforms/pictique/static/images/Logo.svglogo.svg
  • Then update this link to use /logo.svg instead.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<link rel="icon" href="%sveltekit.assets%/Logo.svg" />
<link rel="icon" href="%sveltekit.assets%/Logo.svg" type="image/svg+xml" sizes="any" />
🤖 Prompt for AI Agents
platforms/pictique/src/app.html around line 5: the <link> tag for the favicon
currently only references Logo.svg (uppercase L) and lacks type/sizes
attributes; update this tag to keep the existing filename casing (Logo.svg) and
add type="image/svg+xml" and sizes="any" (or an appropriate sizes value) so the
favicon is correctly discovered and identified without renaming assets.

<meta name="viewport" content="width=device-width, initial-scale=1" />
%sveltekit.head%
</head>
Expand Down
50 changes: 50 additions & 0 deletions platforms/pictique/static/Logo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions platforms/registry/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ const initializeDatabase = async () => {
await AppDataSource.initialize();
server.log.info("Database connection initialized");
} catch (error) {
server.log.error("Error during database initialization:", error);
server.log.error({message: "Error during database initialization", detail: error});
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Use Fastify/Pino error semantics to preserve stack traces

Passing the Error as the first arg ensures proper err field and stack in logs. Current object logging may drop structured error fields.

-        server.log.error({message: "Error during database initialization", detail: error});
+        server.log.error(error as any, "Error during database initialization");
+        // Or:
+        // server.log.error({ err: error }, "Error during database initialization");
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
server.log.error({message: "Error during database initialization", detail: error});
server.log.error(error as any, "Error during database initialization");
// Or:
// server.log.error({ err: error }, "Error during database initialization");
🤖 Prompt for AI Agents
In platforms/registry/src/index.ts around line 27, the current log call passes
the Error in an object which can drop structured error fields and stack; change
the call to pass the Error as the first argument to server.log.error and provide
the message/context as the second argument (e.g., server.log.error(error, {
message: "Error during database initialization", ... })) so Fastify/Pino
preserves the err field and stack trace while still logging your contextual
fields.

process.exit(1);
}
};
Expand Down Expand Up @@ -100,7 +100,7 @@ server.post("/platforms/certification", async (request, reply) => {

server.get("/platforms", async (request, reply) => {
const platforms = [ process.env.PUBLIC_PICTIQUE_BASE_URL, process.env.PUBLIC_BLABSY_BASE_URL, process.env.PUBLIC_GROUP_CHARTER_BASE_URL, process.env.PUBLIC_CERBERUS_BASE_URL ]

return platforms
});

Expand Down