ArtFixPro Project Instructions
These instructions apply to the entire ArtFixPro website repository. Read and follow them before changing files. Direct instructions from the project owner, system instructions and platform instructions have higher priority than this document.
1. Project identity
ArtFixPro is a New York City home-service company. The website presents professional services for apartments and homes, including:
- TV mounting and fireplace TV installation;
- wall hanging and installation of shelves, mirrors, art and frames;
- curtain rod and curtain installation;
- furniture assembly;
- installation into concrete, brick and other difficult substrates;
- window air-conditioner installation;
- full-service moving and turnkey apartment relocation;
- designer-led apartment setup and move-in-ready home preparation.
The website domain is https://artfixpro.com.
Website language:
- All visible website content must be written in natural American English.
- Communicate with the project owner in Russian unless the owner requests another language.
2. Technology and project structure
This is a Jekyll website using Liquid templates, HTML, existing CSS and vanilla JavaScript.
Important files and folders:
_layouts/— base page layouts;_includes/— reusable headers, navigation, footer, forms, pricing sections, FAQ blocks and image components;_includes/heads/— page-specific metadata and structured data in the<head>;_data/— navigation, footer, FAQ and generated-image metadata;assets/images/— source images supplied to the image pipeline;assets/generated/— generated responsive image variants; normally generated and ignored by Git;scripts/— shared and page-specific JavaScript;styles/style.css— global stylesheet;_posts/andblog/— blog content;tools/generate-images.js— responsive image generation script;_config.yml— Jekyll configuration;GemfileandGemfile.lock— Ruby/Jekyll dependencies;_site/— final static build output for hosting.
The main package commands are:
npm run genimg
npm run build
npm run serve
bundle install
bundle exec jekyll build
bundle exec jekyll serve
On Windows PowerShell, use npm.cmd if the PowerShell execution policy blocks npm.ps1:
npm.cmd run build
npm.cmd run serve
The normal deployment artifact is the content of _site/.
3. Mandatory workflow before making changes
Before editing any file:
- Inspect the repository structure and current Git status.
- Read the most relevant existing page, layout, include, stylesheet and script.
- Find a visually similar page and follow its structure.
- Check whether the requested form, modal, calculator, image component or JavaScript behavior already exists.
- Preserve unrelated user changes in a dirty working tree.
- For a new service page, research comparable US services when the request benefits from current market positioning or wording.
- Before implementation, explain the proposed concept, page structure and important assumptions to the owner. If the owner asks to proceed, implement the approved direction.
When a task is only a diagnosis or review, do not implement a fix unless the owner asks for one.
When a task requests a change or a new page:
- Make the smallest coherent set of changes.
- Reuse existing components and styles.
- Keep content, pricing, selectors, form fields and JavaScript data consistent.
- Validate the result proportionally to the risk.
- Report changed files, checks performed and any remaining environment limitation.
Do not create a Git commit or push changes unless the owner explicitly asks for it.
4. Design and frontend rules
- Match the existing ArtFixPro pages exactly in layout, spacing, typography, color and button treatment.
- Reuse
defaultlayout and existing includes wherever possible. - Reuse
styles/style.css; do not introduce a new page-specific stylesheet unless explicitly approved. - Prefer existing classes over inline styles. Inline styles may be used only when the existing page pattern already uses them or when a small local adjustment is necessary.
- Keep pages responsive on mobile, tablet and desktop.
- Preserve accessibility: semantic headings, labels associated with inputs, usable focus states, meaningful button text, keyboard-accessible controls and descriptive alt text.
- Do not remove existing working forms, analytics, navigation behavior, chat, Telegram integration or pricing logic while editing a page.
- Do not use a new framework or add a frontend dependency for a small page feature.
- Avoid decorative clutter. The primary message and CTA must be clear above the fold.
5. Creating a new service page
Every new service page should normally include:
- Front matter with
layout,head_include,descriptionand any service FAQ data used by the project. - A page-specific head include in
_includes/heads/with title, description, keywords, canonical, Open Graph and Twitter metadata. - One clear H1 containing the service and location keyword naturally.
- A hero image using the existing
picture.htmlinclude. - A short hero promise focused on the customer result, not just a list of tasks.
- A primary CTA connected to the existing form or booking flow.
- A section explaining how the service works.
- A section explaining what is included and what makes ArtFixPro different.
- Pricing or plans only when pricing is defined and can be kept consistent with the form.
- FAQ content answering real customer questions.
- Relevant internal links to existing ArtFixPro services.
- Service, FAQPage, BreadcrumbList and LocalBusiness structured data when appropriate.
Do not add a separate main-navigation link unless the owner requests it. A page can still be indexed through the sitemap, footer, contextual internal links, FAQ links or relevant booking prompts.
Use relative_url for internal Liquid links:
<a href="/tv-mounting">TV Mounting</a>
Use absolute URLs for canonical, Open Graph and JSON-LD URLs.
6. Content and positioning rules
The page must sell the finished result and the emotional benefit. Explain:
- what problem the client has now;
- what ArtFixPro takes off the client’s plate;
- what the client will see, use or feel when the work is complete;
- why one coordinated company is better than several unrelated vendors;
- what is included, what is optional and what depends on the project scope.
Use plain, specific language. Avoid keyword stuffing, generic filler, exaggerated claims and vague phrases such as “best service” without evidence.
Do not invent:
- ratings or review counts;
- licenses, insurance limits or warranties;
- guarantees about completion time;
- prices, service areas or capabilities that the owner has not approved.
Existing claims such as insurance, warranties, review counts and service areas must remain consistent across page copy, FAQ, metadata and JSON-LD.
7. Full-service moving and turnkey relocation positioning
The full-service moving service is not merely a moving-truck or labor service. The central promise is a designer-led, move-in-ready home.
The intended customer journey is:
- A move manager and designer review the new apartment and plan the layout.
- The client approves where furniture, accessories and personal belongings will go.
- ArtFixPro can coordinate approved furniture, lighting, rugs, window treatments, decor and everyday essentials when the selected plan includes purchasing.
- The team packs, protects and transports the client’s belongings.
- The team assembles furniture and installs TVs, shelves, mirrors, art, frames, curtain rods and curtains.
- Clothing, linens, kitchen items, bathroom items, decor and everyday belongings are placed in their agreed locations — drawers, cabinets, closets, shelves, tables and other surfaces.
- Boxes and packing debris are removed; the apartment is cleaned and styled.
- The client may spend one night with friends or at a hotel, depending on the approved project schedule, then arrive at a fully prepared home.
The core idea is:
You do not move into a project. You move into your home.
The finished apartment should be described as a place where the bed is made with the agreed linens, clothes are organized, belongings are already in their intended places, and the client can arrive and live comfortably from day one.
Current full-service moving components:
full-service-moving.html— page content, hero, process, SEO sections, area coverage, comparison table and JSON-LD;_includes/moving-pricing.html— apartment-size selector, Silver/Gold/Platinum cards, add-ons and booking modal markup;scripts/moving-booking.js— pricing, plan selection, hover outline, add-on totals and form submission;_includes/heads/full-service-moving.html— metadata and breadcrumb JSON-LD.
Current plan direction:
- Silver: move, assemble and place the client’s existing contents room by room;
- Gold: designer-led planning, 3D plan, organization and move-in-ready setup;
- Platinum: complete turnkey home with approved furniture and accessory purchasing, delivery, placement, styling and final setup.
Current apartment-size options:
- Studio;
- 1-Bedroom;
- 2-Bedroom;
- 3-Bedroom;
- 4+ Bedroom.
Current service-area wording:
New York City, New Jersey and destinations within approximately 100 miles of Manhattan. Longer-distance relocations may be arranged after a project review.
Use this wording unless the owner changes the coverage policy.
8. Forms, pricing and interactive behavior
Use the existing booking flow instead of creating a duplicate form.
For full-service moving:
- preserve the existing plan cards and
select-plan-btncontrols; - the apartment-size selector must update visible plan prices immediately;
- clicking a plan opens the existing booking modal for that plan;
- hovering over a plan moves the green outline to that plan without changing the card’s layout;
- the booking form must show the selected plan, apartment size, selected add-ons, plan price, add-on total and estimated total;
- changing apartment size in the form must update the Deposit Saver amount and total;
- changing add-ons must update the estimated total;
- final pricing remains subject to the approved walkthrough and project scope.
Current Deposit Saver pricing is 40% of the previously used values:
| Apartment size | Price |
|---|---|
| Studio | $276 |
| 1-Bedroom | $396 |
| 2-Bedroom | $596 |
| 3-Bedroom | $876 |
| 4+ Bedroom | $1,196 |
Do not change prices or add-ons without explicit owner approval.
9. Images and responsive image pipeline
Source images belong in assets/images/. The script tools/generate-images.js scans source images and generates responsive WebP variants at 360px, 720px and 1080px into assets/generated/. It also updates _data/generated_images.json.
Use the existing include:
<picture>
<source
type="image/webp"
srcset="/assets/generated/service-image-name-360.webp 360w,
/assets/generated/service-image-name-720.webp 720w,
/assets/generated/service-image-name-1080.webp 1080w"
sizes="(max-width: 768px) 100vw, 740px">
<img
src="/assets/generated/service-image-name-720.webp"
alt="Descriptive SEO-friendly alt text"
loading="lazy" decoding="async">
</picture>
Rules for new images:
- Add one high-quality source image; the build pipeline creates the responsive variants.
- PNG, JPG, JPEG and WebP source files are acceptable.
- Do not manually create multiple responsive variants unless the pipeline cannot process the source.
- Use clean, realistic, professionally finished spaces.
- For installation pages, show the completed work rather than tools or unfinished work.
- Unless people are specifically requested, use no people.
- Do not include tools, ladders, boxes, trash, random cushions, accidental objects, visible text, logos or watermarks.
- Keep the requested object central and clearly visible.
- Provide a Midjourney V8 prompt and an aspect ratio/size recommendation for every new image requested by the owner.
10. SEO and AI discoverability
Each service page should answer the main question directly in the first screenful of text. Use natural phrases such as:
- full-service moving NYC;
- turnkey moving service NYC;
- move-in-ready apartment;
- white-glove moving NYC;
- unpacking and home setup NYC;
- designer-led relocation;
- furniture purchasing and installation;
- apartment setup and home organization;
- concrete installation NYC;
- curtain rod installation into concrete;
- TV mounting on concrete walls.
Use only phrases relevant to the actual service. Include the city or service area naturally, not in every sentence.
Structured data must be valid JSON. After editing JSON-LD, parse it or validate it as part of the checks. Keep the visible copy, FAQ, metadata and JSON-LD consistent.
11. Validation checklist
Before reporting completion:
- run
git diff --check; - run
node --checkfor every changed JavaScript file; - verify that new Liquid includes and front matter are syntactically coherent;
- validate every edited JSON-LD block as JSON;
- verify that every referenced image source exists;
- verify that buttons, anchors, modal IDs and form IDs match the JavaScript;
- run image generation when new source images were added;
- run
bundle exec jekyll buildornpm.cmd run buildon Windows; - inspect the generated
_siteoutput when possible; - if a build fails because of the local Ruby/Jekyll environment, report the exact error and do not hide it;
- do not report a successful build when only syntax checks passed.
12. Deployment
Build the site from the repository root:
bundle install
npm run build
On Windows PowerShell:
bundle install
npm.cmd run build
Upload the contents of _site/ to the hosting provider’s public web directory, such as public_html, www or the configured document root.
Do not upload the source repository unless the hosting provider is configured to build Jekyll itself.
13. Git and user changes
- Inspect
git statusbefore editing. - Treat existing uncommitted changes as belonging to the owner.
- Do not reset, checkout, clean, delete or overwrite unrelated files.
- Never use destructive Git commands unless explicitly requested.
- Commit only when the owner explicitly requests a commit.
- When committing, use a clear message describing the complete requested change.
- Before committing, show or inspect the list of staged files so unrelated work is not accidentally included.