Files
2026-09-06 00:14:09 +03:30

210 lines
12 KiB
Markdown

# ASPHP Co Website Context
## Source Prompt
Create a Persian RTL Next.js website for a server parts store from `asphp.ir`. Use banners, images, logo, fonts, icon feel, and color palette from the main website. Clone only the homepage, about us, and contact us pages. Keep the design flat.
## Source Site Data
- Brand: شرکت آریا شبکه پیشرو
- Domain: `https://www.asphp.ir`
- Meshkee backend domain: `asphp.ir`
- Meshkee API base: `https://api.meshkee.com/api/v1`
- Customer login/profile target from backend prompt: `https://customer.asphp.ir.com`
- Business: فروش تجهیزات سرور HP، رم سرور، هارد سرور، CPU، سوئیچ Cisco و تجهیزات شبکه
- Language/direction: Persian, `fa`, `rtl`
- Primary color: `#0097D9`
- Secondary/tertiary color: `#883F3F`
- Header background: `#17214B`
- Main font: Iran Yekan from Meshkee CDN, downloaded into `public/assets`
- Latin/number font: Montserrat from Meshkee CDN, downloaded into `public/assets`
- Contact phones from source: `02177133934`, `02177132293`, `88467222 (021)`, `22459734 (021)`
- Address: تهران، میدان رسالت خیابان هنگام کوچه شیری پلاک 9 واحد 4
- Socials: `https://www.instagram.com/asphp.co/`, `https://t.me/asphpco`
## Local Implementation
- Framework: Next.js App Router
- Routes:
- `/`
- `/about-us`
- `/contact-us`
- `/store`
- `/store/[id]`
- `/blog`
- `/blog/[slug]`
- `/aboutus` alias
- `/contactus` alias
- Shared content lives in `app/data.js`
- Meshkee backend helpers live in `app/meshkee.js`.
- Header login/user/cart behavior lives in `app/HeaderTools.js`.
- Store add-to-cart controls live in `app/StoreActions.js`.
- Contact submission UI lives in `app/ContactForm.js` and posts through `app/api/contact/route.js`.
- Shared layout components live in `app/components.js`
- Global design tokens and responsive CSS live in `app/globals.css`
- Downloaded source HTML is saved under `.source/` for future AI/system reference.
- Downloaded visual assets and fonts are saved under `public/assets/`.
- Dependencies are locked in `package-lock.json`; Next is pinned to `16.3.4` after npm reported a security warning for `15.5.2`.
- `npm install --ignore-scripts --no-audit --no-fund` completed. `npm run build` starts Next but is killed by this runner with exit code `137` immediately after config load; dev server also reports ready and exits in this environment.
## Notes For Future Prompts
- Keep Persian text RTL and avoid converting source phrasing to English.
- Preserve the ASPHP palette unless the user explicitly asks for a redesign.
- Prefer adding or editing structured arrays in `app/data.js` for content changes.
- Update this file whenever future prompts change site goals, content sources, routes, brand rules, or design constraints.
## 2026-09-03 Layout Update
- Header is container-width and boxed, with the top contact bar, logo/nav, and product search input inside the same header box.
- Homepage search was moved from below the hero into the header.
- Homepage slider is container-width rather than full-bleed.
- Slider uses animated transitions and keeps adjacent previous/next banner panels visible around the active slide.
- Slider text overlay was removed so only banner artwork appears.
- Slider card/box styling was removed; banners now slide as flat images inside the container area.
- Three promo banners were added below the slider; each is fixed at `200px` height on desktop.
- `preview-server.mjs` mirrors these layout changes for the lightweight runnable preview.
## 2026-09-03 Header And Slider Refinement
- Slider images now have rounded corners, with the active slide enlarged.
- Site typography was reduced and header navigation uses lighter font weight.
- Header search uses an icon-only search button.
- Logo was moved to the visual left side of the header.
- Navigation now uses a `دسته بندی ها` mega menu, removes `صفحه اصلی` and `محصولات`, and adds `فروش ویژه`.
## 2026-09-03 Special Sale Frame
- Product images are now square (`1:1`) and cover their frame.
- The homepage product section is now a `فروش ویژه` frame with a minimal light blue background.
- A banner card was added as the first card in the special sale grid.
## 2026-09-03 Mega Menu And Header Search
- `دسته بندی ها` is now a large tabbed-style mega menu panel with tabs and grouped columns.
- `فروش ویژه` appears directly after `دسته بندی ها` in the header.
- Header search is now an icon-only control; clicking it opens the search input.
- Header top bar uses only phone and Instagram icons instead of descriptive labels.
- Iran Yekan light was downloaded and set as the base font weight.
## 2026-09-03 Slider Simplification
- Category menu label now has a small icon plus a minimal light-blue border.
- Slider no longer shows previous/next slides; the active slide fills the container width.
- Slider keeps looping through slides with a fade transition.
## 2026-09-03 Section Title And Card Density
- Section titles now use a branded pill, gradient accent line, and small dot detail.
- Special sale card spacing and frame padding were reduced so product cards appear larger and denser.
## 2026-09-03 Special Sale Countdown
- Added a rolling 72-hour countdown to the `فروش ویژه` frame.
- Next source uses `app/Countdown.js`; `preview-server.mjs` mirrors the same countdown with inline JavaScript for the local preview.
## 2026-09-03 Special Sale Band Refinement
- The special sale light-blue background now spans the full page width while keeping content inside the main container.
- The special sale title is aligned to the right and the countdown is aligned to the left.
- The section title dot was moved beside the Persian title and now pulses slowly.
- Special sale card spacing was tightened again.
## 2026-09-03 Flip Clock Countdown
- The special sale countdown now uses compact flip-clock number cards for days, hours, minutes, and seconds.
- The preview server countdown markup and inline timer script were updated to match the React component.
## 2026-09-03 Sale Frame Spacing
- The special sale band now uses reduced vertical padding with outside top/bottom margin.
- Added blue top and bottom rules to the full-width sale frame.
- Flip-clock numbers now use the primary ASPHP blue instead of the dark red accent.
- Product card gaps in the sale frame were tightened further.
## 2026-09-03 Articles Carousel
- Articles are now structured with image, date, title, and abstract fields in `app/data.js`.
- Homepage articles render as a horizontal carousel with square (`1:1`) cover images.
- `preview-server.mjs` mirrors the carousel article cards for the local static preview.
## 2026-09-05 Services Order
- Services section card order is rendered in reverse visual order on the homepage and preview server.
- Corrected the `articles` anchor so it targets the articles carousel section.
## 2026-09-05 Feature Frame Redesign
- Downloaded the six original feature icons from the ASPHP source theme into `public/assets/feature-*.png`.
- Feature data now stores icon/body objects instead of plain strings.
- The `ویژگی ما` frame now uses a source-inspired split layout with a title/copy panel and a six-item icon grid.
## 2026-09-05 Original Banner Frame
- Downloaded the original three-image `infoitems2` banner frame assets into `public/assets/source-frame-*.jpg`.
- Added a homepage frame after `ویژگی ما` with one large hard-drive banner and two stacked right-side banners, matching the original site composition.
- `preview-server.mjs` mirrors the frame for local preview.
- Updated the homepage about-band image to use the same server-room image and image-over-blue-backing treatment.
## 2026-09-05 Contact CTA Row
- Reworked the homepage contact row into a light-blue branded call-to-action panel with consultation copy, a phone icon, and a prominent phone number.
- `preview-server.mjs` mirrors the CTA row for local preview.
- Later refined into a flat full-width row with top/bottom blue rules and corrected the phone number typography to use the Persian site font without letter spacing.
## 2026-09-05 Feature Icon Normalization
- Normalized visual sizing for original feature icons by scaling wider source PNGs inside the same fixed icon box.
## 2026-09-05 Countdown Order
- Reversed the special sale countdown unit order in both the React component and preview server.
## 2026-09-05 Meshkee Backend Integration
- Added `app/meshkee.js` as the central Meshkee Website API helper for tenant, favicon/logo, store items, blogs, contact submissions, authenticated user lookup, and cart item submission.
- Added Meshkee static image slot helpers for `/tenants/asphp.ir/website/static-images`, including key lookup, list/single handling, linkUrl mapping, and CSS-safe aspect ratio parsing.
- Added store list/detail pages connected to `/tenants/asphp.ir/store-items`, with local product fallbacks because the live API currently returns an empty item list.
- Store detail pages include square lightbox-style gallery links, hover zoom, quantity selector, add-to-cart behavior, description/technical/comments tabs, a login prompt for comments, and similar products.
- Added blog list/detail pages connected to `/tenants/asphp.ir/blogs`, with local article fallbacks because the live API currently returns an empty blog list.
- Updated metadata favicon handling to read Meshkee favicon/logo data first and fall back to `/assets/favicon.png`.
- Header now includes customer login/user dropdown behavior and a cart icon with localStorage count/popup support.
- Contact page form now submits through the Meshkee contact submissions API via a local route handler, resets on success, and shows status text.
- `preview-server.mjs` includes static preview equivalents for `/store`, `/store/:id`, `/blog`, and `/blog/:slug`.
- `next.config.mjs` allows Meshkee API/storage/template image hosts for backend-provided images.
- Homepage image placeholders now read static image slots by key: `slider`, `three-banner-below-slider`, `special-sale-banner`, `server-banner`, `aboutus-banner`, and `three-banner`; if the API is empty or fails, keep the current local placeholder. When image size or aspect ratio changes, update the static image reader usage so `slot.aspectRatio` stays respected.
## 2026-09-06 SEO And Sitemap Config
- Do not create or ship `public/sitemap.xml` or `public/robots.txt`; production nginx proxies both to Meshkee.
- Added `/meshkee/sitemap-config.json` as the sitemap config endpoint with static public routes and Meshkee canonical templates for products, categories, blogs, and portfolios.
- Public page metadata now uses unique titles/descriptions, canonical URLs, and Open Graph/Twitter metadata through `app/seo.js`.
- Product detail metadata prefers CMS product fields and canonicalizes to `/products/{id}/{nameFaSlug}`; blog detail metadata canonicalizes to `/blog/{id}/{titleSlug}`.
- The homepage now has exactly one hidden H1 while section titles remain H2/H3.
## 2026-09-05 CTA Position
- The contact CTA row was moved back to its lower homepage position after the project section and before the articles carousel.
- `preview-server.mjs` mirrors the same homepage section order.
## 2026-09-05 Image Pair And Banner Ratio
- Updated the split server-info image pair so the main image uses a 3:2 visual ratio.
- Moved the secondary blue image below the main image instead of overlaying it.
- Made the stacked original banner-frame images taller with a 3:2 ratio.
- Replaced the dark secondary server-info image with the clearer HP G9 product image.
- Restyled the blue rectangle as a backing layer behind the secondary product image instead of a separate visible block.
- Removed the secondary white product image from the server-info pair and moved the blue accent rectangle upward behind the main image.
## 2026-09-03 Header Flattening
- Top contact strip uses its own light-blue boxed background.
- Logo/navigation row uses a separate white boxed card.
- Top contact strip and navigation row are visually attached with shared edges and complementary rounded corners.
- Login button now uses Iran Yekan instead of the Latin/number font.
## 2026-09-05 Header Tools Position
- Moved the login/user and cart tools into the topbar's former login-button position.
- Removed the duplicate header tools from the main nav row and reversed their order so login appears before cart.