From: Muhammad Rizki <[email protected]>
To: Ammar Faizi <[email protected]>
Cc: Muhammad Rizki <[email protected]>,
Alviro Iskandar Setiawan <[email protected]>,
Dwiky Rizky Ananditya <[email protected]>,
GNU/Weeb Mailing List <[email protected]>
Subject: [PATCH RESEND v1 00/17] Refactor GNU/Weeb Mail Site
Date: Sun, 19 Jan 2025 08:11:17 +0700 [thread overview]
Message-ID: <[email protected]> (raw)
Hello everyone,
This series refactors the `mail.gnuweeb.org` website to adopt a more
modern architecture. The migration uses shadcn-svelte and sveltekit
superforms to improve development efficiency, maintainability,
and user experience.
The changes in this series include:
1. Refactored login page:
- A new user-friendly login form was added with built-in validation
using sveltekit superforms and zod.
2. Refactored home page:
- The home page was redesigned to align with modern UI/UX standards.
- shadcn-svelte components like buttons, inputs, and cards were
used to ensure consistency and accessibility.
Key benefits of this refactor include:
- Improved modularity and code reuse through sveltekit's
component-based architecture.
- Enhanced maintainability with better organization and modern
libraries.
Future enhancements may include adding animations, responsive design
improvements, and expanding form validation capabilities.
Any feedback, issues, or bugs, just tell me!
Muhammad Rizki (17):
feat: initial front-end
feat(routes): configure page layout options
feat(fonts): add Google fonts
feat(components): add shadcn-svelte components
feat(deps): add `axios` as HTTP client
feat(deps): add `svelte-copy` dependency
feat(constants): add navigations and mail-config constant
feat(components): add loading spinner component
feat(components): add header component
feat: initial hooks, schemas, typings for the login functions
feat(components): add app-sidebar component
feat(routes): create initial settings page
feat(routes): add home page
feat(routes): add main layout for the protected routes
feat(routes): add login page
chore(.gitignore): add patch files ignore
chore: update README.md
.gitignore | 33 +-
.npmrc | 1 +
.prettierignore | 4 +
.prettierrc | 19 +
README.md | 111 +
components.json | 17 +
eslint.config.js | 34 +
package-lock.json | 5549 +++++++++++++++++
package.json | 53 +
postcss.config.js | 6 +
src/app.css | 114 +
src/app.d.ts | 13 +
src/app.html | 12 +
src/lib/components/customs/app-sidebar.svelte | 74 +
src/lib/components/customs/header.svelte | 32 +
src/lib/components/customs/loading.svelte | 21 +
.../ui/breadcrumb/breadcrumb-ellipsis.svelte | 23 +
.../ui/breadcrumb/breadcrumb-item.svelte | 16 +
.../ui/breadcrumb/breadcrumb-link.svelte | 31 +
.../ui/breadcrumb/breadcrumb-list.svelte | 23 +
.../ui/breadcrumb/breadcrumb-page.svelte | 23 +
.../ui/breadcrumb/breadcrumb-separator.svelte | 27 +
.../ui/breadcrumb/breadcrumb.svelte | 15 +
src/lib/components/ui/breadcrumb/index.ts | 25 +
src/lib/components/ui/button/button.svelte | 81 +
src/lib/components/ui/button/index.ts | 17 +
.../components/ui/card/card-content.svelte | 16 +
.../ui/card/card-description.svelte | 16 +
src/lib/components/ui/card/card-footer.svelte | 16 +
src/lib/components/ui/card/card-header.svelte | 16 +
src/lib/components/ui/card/card-title.svelte | 25 +
src/lib/components/ui/card/card.svelte | 20 +
src/lib/components/ui/card/index.ts | 22 +
src/lib/components/ui/form/form-button.svelte | 7 +
.../ui/form/form-description.svelte | 17 +
.../ui/form/form-element-field.svelte | 30 +
.../ui/form/form-field-errors.svelte | 30 +
src/lib/components/ui/form/form-field.svelte | 30 +
.../components/ui/form/form-fieldset.svelte | 21 +
src/lib/components/ui/form/form-label.svelte | 21 +
src/lib/components/ui/form/form-legend.svelte | 17 +
src/lib/components/ui/form/index.ts | 33 +
src/lib/components/ui/input/index.ts | 7 +
.../components/ui/input/input-password.svelte | 46 +
src/lib/components/ui/input/input.svelte | 22 +
src/lib/components/ui/label/index.ts | 7 +
src/lib/components/ui/label/label.svelte | 19 +
src/lib/components/ui/separator/index.ts | 7 +
.../components/ui/separator/separator.svelte | 22 +
src/lib/components/ui/sheet/index.ts | 37 +
.../components/ui/sheet/sheet-content.svelte | 56 +
.../ui/sheet/sheet-description.svelte | 16 +
.../components/ui/sheet/sheet-footer.svelte | 20 +
.../components/ui/sheet/sheet-header.svelte | 20 +
.../components/ui/sheet/sheet-overlay.svelte | 19 +
.../components/ui/sheet/sheet-title.svelte | 16 +
src/lib/components/ui/sidebar/constants.ts | 6 +
.../components/ui/sidebar/context.svelte.ts | 79 +
src/lib/components/ui/sidebar/index.ts | 75 +
.../ui/sidebar/sidebar-content.svelte | 24 +
.../ui/sidebar/sidebar-footer.svelte | 21 +
.../ui/sidebar/sidebar-group-action.svelte | 36 +
.../ui/sidebar/sidebar-group-content.svelte | 21 +
.../ui/sidebar/sidebar-group-label.svelte | 34 +
.../ui/sidebar/sidebar-group.svelte | 21 +
.../ui/sidebar/sidebar-header.svelte | 21 +
.../ui/sidebar/sidebar-input.svelte | 23 +
.../ui/sidebar/sidebar-inset.svelte | 24 +
.../ui/sidebar/sidebar-menu-action.svelte | 43 +
.../ui/sidebar/sidebar-menu-badge.svelte | 29 +
.../ui/sidebar/sidebar-menu-button.svelte | 95 +
.../ui/sidebar/sidebar-menu-item.svelte | 21 +
.../ui/sidebar/sidebar-menu-skeleton.svelte | 36 +
.../ui/sidebar/sidebar-menu-sub-button.svelte | 43 +
.../ui/sidebar/sidebar-menu-sub-item.svelte | 14 +
.../ui/sidebar/sidebar-menu-sub.svelte | 25 +
.../components/ui/sidebar/sidebar-menu.svelte | 21 +
.../ui/sidebar/sidebar-provider.svelte | 59 +
.../components/ui/sidebar/sidebar-rail.svelte | 36 +
.../ui/sidebar/sidebar-separator.svelte | 18 +
.../ui/sidebar/sidebar-trigger.svelte | 34 +
src/lib/components/ui/sidebar/sidebar.svelte | 98 +
src/lib/components/ui/skeleton/index.ts | 7 +
.../components/ui/skeleton/skeleton.svelte | 17 +
src/lib/components/ui/sonner/index.ts | 1 +
src/lib/components/ui/sonner/sonner.svelte | 20 +
src/lib/components/ui/tooltip/index.ts | 18 +
.../ui/tooltip/tooltip-content.svelte | 21 +
src/lib/constants/index.ts | 4 +
src/lib/constants/mail-config.ts | 48 +
src/lib/constants/navigations.ts | 15 +
src/lib/hooks/auth.svelte.ts | 64 +
src/lib/hooks/http.svelte.ts | 129 +
src/lib/hooks/is-mobile.svelte.ts | 27 +
src/lib/index.ts | 1 +
src/lib/schemas/login.ts | 6 +
src/lib/typings/common.d.ts | 19 +
src/lib/typings/credential.d.ts | 7 +
src/lib/typings/http.d.ts | 27 +
src/lib/typings/index.ts | 13 +
src/lib/utilities/index.ts | 3 +
src/lib/utilities/styling.ts | 6 +
src/routes/(protected)/+layout.svelte | 19 +
src/routes/(protected)/+layout.ts | 11 +
src/routes/(protected)/home/+page.svelte | 70 +
src/routes/(protected)/settings/+page.svelte | 1 +
src/routes/+layout.svelte | 7 +
src/routes/+layout.ts | 2 +
src/routes/+page.svelte | 122 +
src/routes/+page.ts | 17 +
static/favicon.png | Bin 0 -> 1571 bytes
svelte.config.js | 24 +
tailwind.config.ts | 99 +
tsconfig.json | 19 +
vite.config.ts | 6 +
115 files changed, 8831 insertions(+), 1 deletion(-)
create mode 100644 .npmrc
create mode 100644 .prettierignore
create mode 100644 .prettierrc
create mode 100644 README.md
create mode 100644 components.json
create mode 100644 eslint.config.js
create mode 100644 package-lock.json
create mode 100644 package.json
create mode 100644 postcss.config.js
create mode 100644 src/app.css
create mode 100644 src/app.d.ts
create mode 100644 src/app.html
create mode 100644 src/lib/components/customs/app-sidebar.svelte
create mode 100644 src/lib/components/customs/header.svelte
create mode 100644 src/lib/components/customs/loading.svelte
create mode 100644 src/lib/components/ui/breadcrumb/breadcrumb-ellipsis.svelte
create mode 100644 src/lib/components/ui/breadcrumb/breadcrumb-item.svelte
create mode 100644 src/lib/components/ui/breadcrumb/breadcrumb-link.svelte
create mode 100644 src/lib/components/ui/breadcrumb/breadcrumb-list.svelte
create mode 100644 src/lib/components/ui/breadcrumb/breadcrumb-page.svelte
create mode 100644 src/lib/components/ui/breadcrumb/breadcrumb-separator.svelte
create mode 100644 src/lib/components/ui/breadcrumb/breadcrumb.svelte
create mode 100644 src/lib/components/ui/breadcrumb/index.ts
create mode 100644 src/lib/components/ui/button/button.svelte
create mode 100644 src/lib/components/ui/button/index.ts
create mode 100644 src/lib/components/ui/card/card-content.svelte
create mode 100644 src/lib/components/ui/card/card-description.svelte
create mode 100644 src/lib/components/ui/card/card-footer.svelte
create mode 100644 src/lib/components/ui/card/card-header.svelte
create mode 100644 src/lib/components/ui/card/card-title.svelte
create mode 100644 src/lib/components/ui/card/card.svelte
create mode 100644 src/lib/components/ui/card/index.ts
create mode 100644 src/lib/components/ui/form/form-button.svelte
create mode 100644 src/lib/components/ui/form/form-description.svelte
create mode 100644 src/lib/components/ui/form/form-element-field.svelte
create mode 100644 src/lib/components/ui/form/form-field-errors.svelte
create mode 100644 src/lib/components/ui/form/form-field.svelte
create mode 100644 src/lib/components/ui/form/form-fieldset.svelte
create mode 100644 src/lib/components/ui/form/form-label.svelte
create mode 100644 src/lib/components/ui/form/form-legend.svelte
create mode 100644 src/lib/components/ui/form/index.ts
create mode 100644 src/lib/components/ui/input/index.ts
create mode 100644 src/lib/components/ui/input/input-password.svelte
create mode 100644 src/lib/components/ui/input/input.svelte
create mode 100644 src/lib/components/ui/label/index.ts
create mode 100644 src/lib/components/ui/label/label.svelte
create mode 100644 src/lib/components/ui/separator/index.ts
create mode 100644 src/lib/components/ui/separator/separator.svelte
create mode 100644 src/lib/components/ui/sheet/index.ts
create mode 100644 src/lib/components/ui/sheet/sheet-content.svelte
create mode 100644 src/lib/components/ui/sheet/sheet-description.svelte
create mode 100644 src/lib/components/ui/sheet/sheet-footer.svelte
create mode 100644 src/lib/components/ui/sheet/sheet-header.svelte
create mode 100644 src/lib/components/ui/sheet/sheet-overlay.svelte
create mode 100644 src/lib/components/ui/sheet/sheet-title.svelte
create mode 100644 src/lib/components/ui/sidebar/constants.ts
create mode 100644 src/lib/components/ui/sidebar/context.svelte.ts
create mode 100644 src/lib/components/ui/sidebar/index.ts
create mode 100644 src/lib/components/ui/sidebar/sidebar-content.svelte
create mode 100644 src/lib/components/ui/sidebar/sidebar-footer.svelte
create mode 100644 src/lib/components/ui/sidebar/sidebar-group-action.svelte
create mode 100644 src/lib/components/ui/sidebar/sidebar-group-content.svelte
create mode 100644 src/lib/components/ui/sidebar/sidebar-group-label.svelte
create mode 100644 src/lib/components/ui/sidebar/sidebar-group.svelte
create mode 100644 src/lib/components/ui/sidebar/sidebar-header.svelte
create mode 100644 src/lib/components/ui/sidebar/sidebar-input.svelte
create mode 100644 src/lib/components/ui/sidebar/sidebar-inset.svelte
create mode 100644 src/lib/components/ui/sidebar/sidebar-menu-action.svelte
create mode 100644 src/lib/components/ui/sidebar/sidebar-menu-badge.svelte
create mode 100644 src/lib/components/ui/sidebar/sidebar-menu-button.svelte
create mode 100644 src/lib/components/ui/sidebar/sidebar-menu-item.svelte
create mode 100644 src/lib/components/ui/sidebar/sidebar-menu-skeleton.svelte
create mode 100644 src/lib/components/ui/sidebar/sidebar-menu-sub-button.svelte
create mode 100644 src/lib/components/ui/sidebar/sidebar-menu-sub-item.svelte
create mode 100644 src/lib/components/ui/sidebar/sidebar-menu-sub.svelte
create mode 100644 src/lib/components/ui/sidebar/sidebar-menu.svelte
create mode 100644 src/lib/components/ui/sidebar/sidebar-provider.svelte
create mode 100644 src/lib/components/ui/sidebar/sidebar-rail.svelte
create mode 100644 src/lib/components/ui/sidebar/sidebar-separator.svelte
create mode 100644 src/lib/components/ui/sidebar/sidebar-trigger.svelte
create mode 100644 src/lib/components/ui/sidebar/sidebar.svelte
create mode 100644 src/lib/components/ui/skeleton/index.ts
create mode 100644 src/lib/components/ui/skeleton/skeleton.svelte
create mode 100644 src/lib/components/ui/sonner/index.ts
create mode 100644 src/lib/components/ui/sonner/sonner.svelte
create mode 100644 src/lib/components/ui/tooltip/index.ts
create mode 100644 src/lib/components/ui/tooltip/tooltip-content.svelte
create mode 100644 src/lib/constants/index.ts
create mode 100644 src/lib/constants/mail-config.ts
create mode 100644 src/lib/constants/navigations.ts
create mode 100644 src/lib/hooks/auth.svelte.ts
create mode 100644 src/lib/hooks/http.svelte.ts
create mode 100644 src/lib/hooks/is-mobile.svelte.ts
create mode 100644 src/lib/index.ts
create mode 100644 src/lib/schemas/login.ts
create mode 100644 src/lib/typings/common.d.ts
create mode 100644 src/lib/typings/credential.d.ts
create mode 100644 src/lib/typings/http.d.ts
create mode 100644 src/lib/typings/index.ts
create mode 100644 src/lib/utilities/index.ts
create mode 100644 src/lib/utilities/styling.ts
create mode 100644 src/routes/(protected)/+layout.svelte
create mode 100644 src/routes/(protected)/+layout.ts
create mode 100644 src/routes/(protected)/home/+page.svelte
create mode 100644 src/routes/(protected)/settings/+page.svelte
create mode 100644 src/routes/+layout.svelte
create mode 100644 src/routes/+layout.ts
create mode 100644 src/routes/+page.svelte
create mode 100644 src/routes/+page.ts
create mode 100644 static/favicon.png
create mode 100644 svelte.config.js
create mode 100644 tailwind.config.ts
create mode 100644 tsconfig.json
create mode 100644 vite.config.ts
base-commit: 962ad60aacbd390e5df76bb9596336a143c45d97
--
Muhammad Rizki
next reply other threads:[~2025-01-19 1:12 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-01-19 1:11 Muhammad Rizki [this message]
2025-01-19 1:11 ` [PATCH v1 01/17] feat: initial front-end Muhammad Rizki
2025-01-19 1:11 ` [PATCH v1 02/17] feat(routes): configure page layout options Muhammad Rizki
2025-01-19 1:11 ` [PATCH v1 03/17] feat(fonts): add Google fonts Muhammad Rizki
2025-01-19 1:11 ` [PATCH v1 04/17] feat(components): add shadcn-svelte components Muhammad Rizki
2025-01-19 1:11 ` [PATCH v1 05/17] feat(deps): add `axios` as HTTP client Muhammad Rizki
2025-01-19 1:11 ` [PATCH v1 06/17] feat(deps): add `svelte-copy` dependency Muhammad Rizki
2025-01-19 1:11 ` [PATCH v1 07/17] feat(constants): add navigations and mail-config constant Muhammad Rizki
2025-01-19 1:11 ` [PATCH v1 08/17] feat(components): add loading spinner component Muhammad Rizki
2025-01-19 1:11 ` [PATCH v1 09/17] feat(components): add header component Muhammad Rizki
2025-01-19 1:11 ` [PATCH v1 10/17] feat: initial hooks, schemas, typings for the login functions Muhammad Rizki
2025-01-19 1:11 ` [PATCH v1 11/17] feat(components): add app-sidebar component Muhammad Rizki
2025-01-19 1:11 ` [PATCH v1 12/17] feat(routes): create initial settings page Muhammad Rizki
2025-01-19 1:11 ` [PATCH v1 13/17] feat(routes): add home page Muhammad Rizki
2025-01-19 1:11 ` [PATCH v1 14/17] feat(routes): add main layout for the protected routes Muhammad Rizki
2025-01-19 1:11 ` [PATCH v1 15/17] feat(routes): add login page Muhammad Rizki
2025-01-19 1:11 ` [PATCH v1 16/17] chore(.gitignore): add patch files ignore Muhammad Rizki
2025-01-19 1:11 ` [PATCH v1 17/17] chore: update README.md Muhammad Rizki
2025-01-19 19:53 ` [PATCH RESEND v1 00/17] Refactor GNU/Weeb Mail Site Ammar Faizi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox