English | 简体中文
A personal portfolio website deployed on GitHub Pages, presenting technical projects, creative work, and an introduction. Its multilingual architecture supports Chinese, English, and French, with responsive layouts and a polished user interface.
Live site: https://rayawa.github.io Primary domain: https://rayawa.top
This is a static site with no local build step. The repository root is the publishing directory; pushing to
mastertriggers automatic GitHub Actions deployment without local packaging.
- Chinese (
index.html): Site root and default language - English (
en/index.html): Separate English directory mirroring the full site structure - French (
fr/index.html): Separate French directory mirroring the full site structure - Static translations: Runtime i18n rendering is removed; text is written directly in HTML, so the first screen does not wait for a dictionary to load
- Search-engine support: Each page embeds reciprocal
canonicalandhreflanglinks (zh-CN/en/fr/x-default)
- Mobile-first design
- Adapts to phones, tablets, and desktops
- Touch-friendly interactions, with reduced particle and other heavy effects on mobile
- Optimized loading performance
- Home loading animation: Brand wordmark typing, SVG progress ring, and percentage indicator
- Glassmorphism cards (
glass-card) and progressive scroll reveal animations (reveal) - Floating utility buttons: Back to top with a scroll progress ring, and page refresh
- Card-based project layouts and consistent tags
- Dark theme for comfortable viewing
- Page fade-in/fade-out transitions and gradual language-switch transitions
- Introduction: Basic information, current focus, technologies and fields, and selected achievements
- Projects: Primary project cards and secondary mini-cards, some linking to standalone sites. Primary projects are dashboard, AstraPlusCar, ElvaCos, WeakSignal, QiZhi01, ComplexSweeper, SmartShed, and Loci, followed by TextVideoGen, biology, SPM, Rock Paper Scissors, campus security, and Difficult Rocket.
- Photography and life: Photo gallery, piano, reading list, drawing, and other interests
- Contact: Social links including GitHub, Xiaohongshu, and Bilibili
- Acknowledgments page (
thanks.html) and 404 page (404.html)
- Reciprocal multilingual
canonicalandhreflanglinks - Open Graph and Twitter Card metadata, with
ray.jpgas the sharing image - Home page
<link rel="prefetch">hints for key project pages to accelerate navigation
Rayawa.github.io/
├── index.html # Chinese home (default language, site root)
├── thanks.html # Acknowledgments
├── 404.html # 404 error page
├── favicon.ico # Site icon
├── ray.jpg # Portrait / social sharing image (OG Image)
├── README.md # Project documentation
│
├── .github/
│ └── workflows/
│ └── jekyll-gh-pages.yml # GitHub Pages automatic build and deployment workflow
│
├── en/ # English version (mirrors the root structure)
│ ├── index.html # English home
│ ├── thanks.html # English acknowledgments
│ ├── life/
│ │ ├── books.html # English reading list
│ │ └── piano.html # English piano page
│ └── projects/ # English project pages (23, matching Chinese pages)
│
├── fr/ # French version (same structure as English)
│ ├── index.html
│ ├── thanks.html
│ ├── life/
│ │ ├── books.html
│ │ └── piano.html
│ └── projects/ # French project pages (23)
│
├── life/ # Chinese life pages
│ ├── books.html # Reading list
│ └── piano.html # Piano page
│
├── projects/ # Chinese project pages (23)
│ ├── Dashboard.html # Overview of three Dashboard clients
│ ├── QiZhi01.html # QiZhi 01 · Ascend AI full stack
│ ├── AstraPlusCar.html # AstraPlusCar · Smart vehicle
│ ├── ElvaCos.html # ElvaCos · Offline personal management for cosplayers
│ ├── ComplexSweeper.html # ComplexSweeper · Native ports for three platforms
│ ├── Loci.html # Shiji daily time journal with place memories (in development)
│ ├── Biology.html # Biology projects
│ ├── gene.html # Genetic engineering: interactive Agrobacterium transformation lab
│ ├── Hi3861.html # Hi3861 embedded development
│ ├── Hi3861-readme.html # Hi3861 documentation (renders OpenHarmony README)
│ ├── idv.html # Identity V launcher
│ ├── SchoolPapers.html # School papers
│ ├── RockPaperScissors.html # Rock-paper-scissors detection
│ ├── WeakSignal.html # Weak electrical signal measurement using optical-lever amplification
│ ├── SmartShed.html # SmartShed smart greenhouse
│ ├── SPM.html # Sweet Potato Mod
│ ├── TextVideoGen.html # TextVideoGen local video production workspace
│ ├── PetSnap.html # MindSpore-based cat/dog recognition
│ ├── CarRent.html # Linked-list car rental management
│ ├── CommChain.html # C# digital communication simulator
│ ├── GaokaoQuery.html # Gaokao result query tool
│ ├── xxh.html # XXH emotional compatibility test
│ └── YoloSecurityPlatform.html # Intelligent security remote monitoring platform
│
├── docs/ # Content maintenance records
│ └── maintenance-2026-10-20.md
│
└── static/ # Static assets (shared components)
├── css/ # Stylesheets (21)
│ ├── common.css # Shared styles (navigation, footer, particles, transitions, etc.)
│ ├── subpage.css # Shared subpage styles
│ ├── project-layout.css # Shared project layouts (brief/guide/category tags)
│ ├── project-showcase.css # ps-* showcase project styles
│ ├── app-projects.css # ElvaCos, Loci, and ComplexSweeper showcase styles
│ ├── markdown-page.css # Markdown rendering page styles
│ ├── index.css # Home styles
│ ├── 404.css # 404 page styles
│ ├── ascend310.css # Ascend project styles
│ ├── astracar.css # AstraPlusCar project styles
│ ├── gene.css # Genetic engineering project styles
│ ├── hi3861.css # Hi3861 project styles
│ ├── hi3861-readme.css # Hi3861 documentation page styles
│ ├── rockpaperscissors.css # Rock-paper-scissors project styles
│ ├── signal.css # Weak electrical signal project styles
│ ├── smartshed.css # Smart greenhouse project styles
│ ├── spm.css # Sweet Potato Mod styles
│ ├── xxh.css # XXH test styles
│ ├── books.css # Reading list styles
│ ├── piano.css # Piano page styles
│ └── drawing.css # Drawing theme styles (reserved, not referenced yet)
│
├── js/ # JavaScript files (8)
│ ├── common.js # Shared scripts (particles, floating tools, transitions, scroll reveal)
│ ├── navbar.js # Navigation injection with language switching
│ ├── footer.js # Footer injection
│ ├── index.js # Home script (loading, gallery carousel, contact form, parallax)
│ ├── gene.js # Genetic engineering interactive lab logic
│ ├── xxh.js # XXH test logic
│ ├── signal-lightbox.js # Signal project lightbox (keyboard/previous/next)
│ └── hi3861-readme.js # Fetch and render the OpenHarmony README.md
│
└── resources/ # Resource files
├── cn.svg / uk.svg / fr.svg # Language-switch flag icons
├── xxh.py # XXH supporting script
├── apps/ # ElvaCos app screenshots
├── bio/ # Biology images and paper PDFs
├── dashboard/ # Dashboard app icon
├── main_page/ # Home card images (including generated ElvaCos, Loci, ComplexSweeper illustrations)
│ └── gallery/ # Photography gallery
├── openharmony/ # Hi3861 project documents (README.md / PDF / PPTX)
├── piano/ # Piano sheet-music images
├── rps/ # Rock-paper-scissors demo GIFs
├── signal/ # Signal project materials (.ino / .fzz / schematics / report)
└── spm/ # Sweet Potato Mod assets
The site has 82 HTML pages (28 Chinese + 27 English + 27 French), including 23 project pages per language.
- Frontend: HTML5, CSS3, JavaScript (ES6+), without frameworks or build steps
- Architecture: Static multilingual architecture without runtime dynamic i18n
- Shared components: Script-injected navigation and footer, maintained from one source across the site
- Icons: Font Awesome 6.4.0 (CDN) and inline SVG
- Fonts: Google Fonts (Inter / JetBrains Mono), with system fallbacks
- Animation: CSS3 transitions and animations, particles.js backgrounds
- Interactions: Markdown rendering through
marked, image lightboxes, and interactive experiment simulations - Deployment: Automatic GitHub Actions + GitHub Pages build and publication
-
Clone the repository:
git clone https://github.com/Rayawa/Rayawa.github.io.git cd Rayawa.github.io -
Preview locally (an HTTP server is recommended:
common.jsand other files use absolute/static/...paths, andhi3861-readme.jsreads Markdown throughfetch, which fails underfile://):python3 -m http.server 8000 # Or npx http-server -p 8000 -
Visit
http://localhost:8000to view the site.
GitHub Actions deploys the site automatically. See .github/workflows/jekyll-gh-pages.yml:
- Pushes to
mastertrigger a build. - The workflow can also be started manually from the Actions tab (
workflow_dispatch). - Build outputs are uploaded through
actions/upload-pages-artifactand published byactions/deploy-pages. - Visit https://rayawa.github.io ; custom domain: https://rayawa.top
-
Create an HTML file in the corresponding language directory.
- Chinese: Root or the appropriate subdirectory (
projects/,life/) - English: Under
en/ - French: Under
fr/
- Chinese: Root or the appropriate subdirectory (
-
Include the shared navigation and footer (there are no separate component HTML files anymore):
<div id="site-navbar"></div> <script src="/static/js/navbar.js"></script> ... <div id="site-footer"></div> <script src="/static/js/footer.js"></script>
navbar.js/footer.jsautomatically derive the language prefix and relative hierarchy fromdocument.documentElement.langand the current path, so links do not need manual maintenance. -
Complete the SEO head (
canonicaland threehreflangentries), matching similar project pages. -
Add page-specific styles if needed.
- Create a CSS file in
static/css/. - Reference the correct path in HTML.
- Create a CSS file in
-
Choose how to introduce each project according to its nature, rather than using one template, writing each language separately:
- Engineering systems / demos (such as
SmartShed,AstraPlusCar,ascend310) need background for visitors to understand them; provide an overview throughproject-briefand a purpose/usage guide throughproject-guide. - Works / archives (such as
biology,ncut_papers,signal) have self-contained content; use a one-sentence hero introduction and topic-based sections, without an overview box. - Pages that are the finished product (such as
gene,idv,xxh) should be usable immediately; explain what they are in the hero, move technical details below, and omit the overview box. - The criterion is whether visitors can understand what the page is from its content alone. Home project cards should likewise describe actual functionality. Mark the status of unpublished project materials without placeholders or speculative achievements.
- Engineering systems / demos (such as
The static multilingual architecture requires separate updates:
- Chinese: Edit the corresponding root files.
- English: Edit corresponding files under
en/. - French: Edit corresponding files under
fr/.
- Shared assets: Add to the appropriate subdirectory in
static/. - Project assets: Organize by project under
static/resources/<project>/. - Images: Optimize and compress first, consistently using
/static/resources/...paths.
- Static translations: Replace dynamic i18n with directly embedded text to improve loading speed.
- Separate directories: Each language has its own mirrored directory structure for easier maintenance.
- Automatic paths: Navigation and footer scripts derive relative hierarchy automatically, reducing cross-language link errors.
- SEO alignment: Three language versions declare one another through
hreflangto avoid duplicate-content penalties.
- Shared navigation: Injected by
static/js/navbar.js, including language switching and mobile menus. - Shared footer: Injected by
static/js/footer.js, with all three languages maintained centrally. - Modular styles:
common.css/subpage.cssprovide the base layer, while each page has its own stylesheet. - Script organization: JavaScript is separated by page function to avoid bloated code.
- No local build: No bundling or compilation; pushes publish directly, while Pages only performs the static hosting build.
- Prefetching: Home uses
<link rel="prefetch">for key project pages. - On-demand loading: Heavy logic such as lightboxes and Markdown rendering loads only on relevant pages.
- Mobile adaptation: Small screens automatically reduce particle counts and other effects.
- Encoding: UTF-8 ensures correct multilingual display.
- Clear directories: Files organized by language and function.
- Single data source: Navigation, footer, and language lists each have one definition.
- Documentation: Detailed README and individual project descriptions.
- Version control: Complete Git history.
- Semantic HTML: Appropriate HTML5 elements.
- ARIA support: Interactive components such as lightboxes use
role="dialog"to improve screen-reader compatibility. - Keyboard navigation: Full keyboard operations, including arrow keys and ESC.
- Responsive design: Adapts to different devices and screen sizes.
- Static i18n: Embedded translated text directly in HTML and removed the i18n.js dependency.
- Directory reorganization: Created separate
en/andfr/language directories. - Path fixes: Automatically repaired relative paths for all static assets and links.
- Component consolidation: Replaced separate HTML fragments for navigation and footer with script injection, eliminating duplicates.
- HTML cleanup: Fixed HTML tags and structural issues.
- Separate dashboard site: Moved the Huawei AppGallery dashboard to
dashboard.rayawa.top, retaining a project overview and direct entry on the main site. - New project pages: Added SmartShed (smart greenhouse), RockPaperSissors (rock-paper-scissors detection), and ascend310 (Ascend AI full stack).
- Signal project update: Added schematics, wiring diagrams, lightbox browsing, and project documents.
- Asset locations: Move page-specific JS/CSS into the corresponding page directories.
- Build workflow: Introduce building and compression (currently there is no local build; pushes publish directly).
- Performance monitoring: Integrate analysis and optimization tools.
- Test coverage: Add automated tests to verify structural and link consistency across the three languages.
- Image formats: Convert large home and gallery images to WebP/AVIF for further size reduction.
Issues and pull requests are welcome:
- Fork this repository.
- Create a feature branch (
git checkout -b feature/AmazingFeature). - Commit changes (
git commit -m 'Add some AmazingFeature'). - Push the branch (
git push origin feature/AmazingFeature). - Open a pull request.
- Language synchronization: Update all language versions when changing functionality.
- Paths: Check that relative paths work from different directories.
- Components: Test all pages using
navbar.js/footer.jswhen changing them. - Encoding: Use UTF-8 for multilingual compatibility.
- Local verification: Browse affected pages through
python3 -m http.serverbefore committing.
This project uses the MIT License.
Last updated: October 29, 2026 Architecture version: v3.0 (static multilingual content · script-injected components) Technology stack: HTML5, CSS3, JavaScript, GitHub Pages
The current focus and technical fields on all three home pages now reflect public projects, retaining the handwritten introduction. Added
projects/Dashboard.html and its English/French versions to introduce the HarmonyOS, Apple, and Android
native clients. The home dashboard card links to this overview, which retains direct links to the product site and all three clients' source repositories.
ComplexSweeper now reflects the unified repository, two modes, and the 1.2.0 scope; PetSnap reflects the current HarmonyOS
client; AstraPlusCar reflects short video segments and three recovery attempts while retaining the limitations on wireless stability and physical-vehicle validation.
Loci and ElvaCos retain their development / Beta status after verification.
For supporting evidence and unfinished capabilities, see the maintenance record.
Updated Loci as Shiji, a daily time journal, and Dashboard HarmonyOS to 3.2.0. Refined ElvaCos and project descriptions across all three languages, removed repeated summaries, and checked repository visibility and renamed URLs. Private and unavailable repository links are omitted. See the maintenance record.