Initial exam template: Ghaymah GenAI Engineer (60 min)
هذا الالتزام موجود في:
107
README.md
Normal file
107
README.md
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
# Ghaymah GenAI Engineer — Technical Interview
|
||||||
|
|
||||||
|
**Track:** Generative AI / AI Agents
|
||||||
|
**Duration:** 60 minutes
|
||||||
|
**Submission:** GitPasha (push to your exam repo)
|
||||||
|
**Language:** English or Arabic — your choice (Arabic is encouraged for the ecosystem questions)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Welcome 👋
|
||||||
|
|
||||||
|
Welcome to the Ghaymah technical interview. This is a **hands-on, 60-minute** exam — not a whiteboard Q&A. We want to see how you think, what you build, and how you work inside the **Arabic tech ecosystem**, because that is the ecosystem we build for and with.
|
||||||
|
|
||||||
|
You are interviewing to join the team that builds **agents like Cumin** — the AI agent that runs inside a compute sandbox (persistent containers + serverless functions + an object-store workspace) and works across data processing, scraping, conversion, and deployment. In this exam you will:
|
||||||
|
|
||||||
|
1. Introduce yourself to the Arabic tech ecosystem (**Qabilah** + **Mortakaz**).
|
||||||
|
2. Design a **memory module** for an agent like Cumin, and show how to use it.
|
||||||
|
3. Plan how to **fine-tune an Arabic TTS or STT** model.
|
||||||
|
4. Sign up to **Ghaymah** and **deploy a simple static website**.
|
||||||
|
|
||||||
|
## What we are evaluating
|
||||||
|
|
||||||
|
| Skill | Where it shows up |
|
||||||
|
|---|---|
|
||||||
|
| Arabic tech ecosystem awareness | Qabilah + Mortakaz tasks |
|
||||||
|
| Agent engineering intuition (memory, retrieval, storage trade-offs) | Q1 |
|
||||||
|
| Arabic NLP depth (data, diacritization, evaluation, fine-tuning) | Q2 |
|
||||||
|
| Shipping — can you actually deploy something live | Q3 + Q4 |
|
||||||
|
|
||||||
|
## The stack you will touch
|
||||||
|
|
||||||
|
| Platform | What it is | URL |
|
||||||
|
|---|---|---|
|
||||||
|
| **Qabilah (قبيلة)** | Arabic tech social / community platform | https://qabilah.com |
|
||||||
|
| **Mortakaz (مُرتكز)** | Directory of ~686 Arab-built products | https://mortakaz.com |
|
||||||
|
| **Ghaymah (غيمة)** | Arabic cloud platform (PaaS) | https://ghaymah.systems |
|
||||||
|
| **Ghaymah Dashboard** | Where you sign up and deploy | https://deploy.ghaymah.systems |
|
||||||
|
|
||||||
|
## Time budget (60 min total)
|
||||||
|
|
||||||
|
| Task | Folder | Budget |
|
||||||
|
|---|---|---|
|
||||||
|
| Read this README + set up | — | 5 min |
|
||||||
|
| Qabilah profile + ecosystem note | `common-qabilah/` | 8 min |
|
||||||
|
| Mortakaz discovery + integration proposal | `common-mortakaz/` | 10 min |
|
||||||
|
| Q1 — Cumin memory module design | `q1-cumin-memory/` | 15 min |
|
||||||
|
| Q2 — Arabic TTS or STT fine-tune plan | `q2-arabic-tts-stt/` | 15 min |
|
||||||
|
| Q3 — Ghaymah signup | `q3-ghaymah-signup/` | 5 min |
|
||||||
|
| Q4 — Deploy a static site on Ghaymah | `q4-static-site-deploy/` | 12 min |
|
||||||
|
| **Total** | | **≈ 60 min** |
|
||||||
|
|
||||||
|
> ⏱️ Be honest about your time. A focused, complete 60-minute submission beats a half-finished 2-hour one. We look at commit timestamps.
|
||||||
|
|
||||||
|
## Rules
|
||||||
|
|
||||||
|
1. Work **inside this repo**. Each question has its own folder with a task description and an answer template. Fill in your answers **in place**.
|
||||||
|
2. Do not rename or move the question folders.
|
||||||
|
3. Never commit real credentials, tokens, or passwords — use placeholders like `<REDACTED>`.
|
||||||
|
4. For Q4, commit your actual site source under `q4-static-site-deploy/site/`.
|
||||||
|
5. You may use any public resources (docs, model cards, papers, blogs) — cite them inline.
|
||||||
|
|
||||||
|
## Repository structure
|
||||||
|
|
||||||
|
```
|
||||||
|
ghaymah-genai-exam/
|
||||||
|
├── README.md ← you are here
|
||||||
|
├── common-qabilah/
|
||||||
|
│ └── qabilah-ecosystem.md ← task + answer template
|
||||||
|
├── common-mortakaz/
|
||||||
|
│ └── mortakaz-discovery.md ← task + answer template
|
||||||
|
├── q1-cumin-memory/
|
||||||
|
│ └── cumin-memory-module.md ← task + answer template
|
||||||
|
├── q2-arabic-tts-stt/
|
||||||
|
│ └── arabic-tts-stt-finetune.md ← task + answer template
|
||||||
|
├── q3-ghaymah-signup/
|
||||||
|
│ └── ghaymah-signup.md ← task + answer template
|
||||||
|
└── q4-static-site-deploy/
|
||||||
|
├── static-site-deploy.md ← task + answer template
|
||||||
|
└── site/ ← put your site files here
|
||||||
|
├── index.html
|
||||||
|
└── style.css
|
||||||
|
```
|
||||||
|
|
||||||
|
## How to submit (GitPasha)
|
||||||
|
|
||||||
|
1. Answer every question by editing the template files in place.
|
||||||
|
2. Commit as you go, not one big dump at the end:
|
||||||
|
```bash
|
||||||
|
git add . && git commit -m "q1: memory module design"
|
||||||
|
```
|
||||||
|
3. `git push origin main` when done.
|
||||||
|
4. Verify on GitPasha that every file (including your Q4 site source) is present.
|
||||||
|
|
||||||
|
## Scoring rubric
|
||||||
|
|
||||||
|
| Question | Weight | What “excellent” looks like |
|
||||||
|
|---|---|---|
|
||||||
|
| common-qabilah | 10% | Real profile URL + a note showing genuine exploration, not copy-paste |
|
||||||
|
| common-mortakaz | 15% | Two concrete products, technically-grounded integration with Ghaymah's AI stack, honest challenges |
|
||||||
|
| Q1 memory module | 30% | Clear memory taxonomy, concrete storage choices, sensible write/read policy, runnable pseudocode, Ghaymah integration |
|
||||||
|
| Q2 TTS/STT | 25% | Correct Arabic data/preprocessing/eval, realistic training config, deployable plan |
|
||||||
|
| Q3 signup | 5% | Confirmed signup + thoughtful platform observations |
|
||||||
|
| Q4 static site | 15% | A live URL that resolves + source committed + a short write-up |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Good luck — and welcome to the tribe. 🐪
|
||||||
85
common-mortakaz/mortakaz-discovery.md
Normal file
85
common-mortakaz/mortakaz-discovery.md
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
# Mortakaz (مُرتكز) — Product Discovery & Ghaymah Integration
|
||||||
|
|
||||||
|
⏱ **Budget: ~10 minutes** · Weight: 15%
|
||||||
|
|
||||||
|
## The task
|
||||||
|
|
||||||
|
[Mortakaz](https://mortakaz.com) is an Arabic platform for discovering technical products and creative ideas — it lists ~686 Arab-built projects. Your job: find AI/GenAI products on Mortakaz and reason about how they could run on **Ghaymah's** AI stack.
|
||||||
|
|
||||||
|
Ghaymah (https://ghaymah.systems) publishes, among other things:
|
||||||
|
|
||||||
|
- Ready-to-use **LLM models** (inference)
|
||||||
|
- **Vector store** + **embedding models**
|
||||||
|
- **GPU compute** and **container deployment** (Git-based auto-deploy)
|
||||||
|
- **Managed PostgreSQL** and object/block **storage**
|
||||||
|
|
||||||
|
### Methodology
|
||||||
|
|
||||||
|
1. Browse the live Mortakaz listing (most recent projects first).
|
||||||
|
2. Open individual product pages and read the description + live URL.
|
||||||
|
3. Pick **two** AI/GenAI products with a *genuine, identifiable* technical fit with Ghaymah's AI stack (not generic applicability).
|
||||||
|
|
||||||
|
### For each product, write
|
||||||
|
|
||||||
|
- **Product description** — what it does, who it's for, its maker.
|
||||||
|
- **Integration proposal** — which specific Ghaymah products it would use and how.
|
||||||
|
- **Added value for the end user** — why moving to (or building on) Ghaymah helps.
|
||||||
|
- **Potential challenges** — model quality, feature parity, migration effort, commercial readiness. Be honest.
|
||||||
|
|
||||||
|
### Finally
|
||||||
|
|
||||||
|
- State **which of the two is more viable** in the near term, and why (1–2 paragraphs).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ANSWER — Mortakaz
|
||||||
|
|
||||||
|
### Proposal 1: `<product name>`
|
||||||
|
|
||||||
|
- **Live product:** `<url>`
|
||||||
|
- **Maker:** `<name>`
|
||||||
|
|
||||||
|
#### Product description
|
||||||
|
|
||||||
|
> _write here_
|
||||||
|
|
||||||
|
#### Integration with ghaymah.systems
|
||||||
|
|
||||||
|
> _write here — name the specific Ghaymah products used_
|
||||||
|
|
||||||
|
#### Added value for the end user
|
||||||
|
|
||||||
|
> _write here_
|
||||||
|
|
||||||
|
#### Potential challenges
|
||||||
|
|
||||||
|
> _write here_
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Proposal 2: `<product name>`
|
||||||
|
|
||||||
|
- **Live product:** `<url>`
|
||||||
|
- **Maker:** `<name>`
|
||||||
|
|
||||||
|
#### Product description
|
||||||
|
|
||||||
|
> _write here_
|
||||||
|
|
||||||
|
#### Integration with ghaymah.systems
|
||||||
|
|
||||||
|
> _write here_
|
||||||
|
|
||||||
|
#### Added value for the end user
|
||||||
|
|
||||||
|
> _write here_
|
||||||
|
|
||||||
|
#### Potential challenges
|
||||||
|
|
||||||
|
> _write here_
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Which integration is more viable (and why)
|
||||||
|
|
||||||
|
> _write here — 1–2 paragraphs_
|
||||||
39
common-qabilah/qabilah-ecosystem.md
Normal file
39
common-qabilah/qabilah-ecosystem.md
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
# Qabilah (قبيلة) — Ecosystem Introduction
|
||||||
|
|
||||||
|
⏱ **Budget: ~8 minutes** · Weight: 10%
|
||||||
|
|
||||||
|
## The task
|
||||||
|
|
||||||
|
[Qabilah](https://qabilah.com) is an Arabic tech social & community platform — think of it as the Arabic-speaking tech community's home. Before you design agents for this ecosystem, you should know who lives in it.
|
||||||
|
|
||||||
|
1. Go to https://qabilah.com and **create a profile** (if you don't already have one). Use a real name and a one-line bio about what you build.
|
||||||
|
2. Browse the feed / communities. Find **three Arabic AI or GenAI projects, people, or companies** that interest you.
|
||||||
|
3. Write a short note (150–250 words) answering: **what is Qabilah, and what role does it play in the Arabic tech ecosystem?**
|
||||||
|
|
||||||
|
## What to submit
|
||||||
|
|
||||||
|
Fill in the template below, in this file. Put your profile URL in section 1 and your note in section 2.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ANSWER — Qabilah
|
||||||
|
|
||||||
|
### 1. My profile link
|
||||||
|
|
||||||
|
```
|
||||||
|
https://qabilah.com/profile/<your-handle>/posts
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Ecosystem note (150–250 words)
|
||||||
|
|
||||||
|
> _Write here. What is Qabilah? What problem does it solve for Arabic-speaking builders? How does it connect people/projects/funding? You may write in Arabic or English._
|
||||||
|
|
||||||
|
<!-- replace with your note -->
|
||||||
|
|
||||||
|
### 3. Three Arabic AI projects / people I found
|
||||||
|
|
||||||
|
| # | Name | What it does | Why it interested me |
|
||||||
|
|---|---|---|---|
|
||||||
|
| 1 | | | |
|
||||||
|
| 2 | | | |
|
||||||
|
| 3 | | | |
|
||||||
87
q1-cumin-memory/cumin-memory-module.md
Normal file
87
q1-cumin-memory/cumin-memory-module.md
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
# Q1 — Design a Memory Module for the Cumin Agent
|
||||||
|
|
||||||
|
⏱ **Budget: ~15 minutes** · Weight: 30%
|
||||||
|
|
||||||
|
## Context
|
||||||
|
|
||||||
|
We build agents like **Cumin** — the AI agent that runs inside a compute sandbox. Today Cumin's runtime looks like this:
|
||||||
|
|
||||||
|
| Primitive | Purpose |
|
||||||
|
|---|---|
|
||||||
|
| **Containers** | Persistent Linux shells for private work (data processing, analysis, conversion). They stay alive for a conversation. |
|
||||||
|
| **Functions** | Serverless HTTP endpoints for public things (APIs, dashboards, websites). |
|
||||||
|
| **Workspace (object store)** | Flat file storage — every file Cumin produces lives here. |
|
||||||
|
| **Skills** | Markdown files Cumin reads to remember *how* to do tasks (its current, rudimentary long-term memory). |
|
||||||
|
| **Secrets** | Key/value pairs for credentials/tokens. |
|
||||||
|
|
||||||
|
**The gap:** Cumin has no real memory. Between turns it has to re-read its workspace files and skills from scratch. It forgets past conversations, past decisions, and past failures. There is no way to recall *"what did I learn last time I did this?"*
|
||||||
|
|
||||||
|
## Your task
|
||||||
|
|
||||||
|
Design a **memory module** for Cumin. Be concrete — we want to see storage choices, retrieval logic, and pseudocode, not hand-waving. Cover:
|
||||||
|
|
||||||
|
1. **Memory taxonomy** — define at least: *working* (short-term), *episodic* (past tasks/conversations), *semantic* (facts & patterns), and *procedural* (how-to, i.e. the evolution of "skills"). For each: what it stores, an example, expected size, and retention/TTL.
|
||||||
|
2. **Storage backends** — map each memory type to a concrete store. Where possible, map to **Ghaymah** products (vector store + embeddings, managed PostgreSQL, object storage).
|
||||||
|
3. **Write policy** — when does the agent write to memory, and what does it write?
|
||||||
|
4. **Read / retrieval policy** — how does the agent decide what to recall, and with what ranking (e.g. recency + semantic similarity + metadata filters)?
|
||||||
|
5. **Memory API** — pseudocode for `save`, `recall`, `search`, and (optionally) `summarize`/`forget`.
|
||||||
|
6. **Agent-loop integration** — pseudocode showing where memory is read/written during a normal turn.
|
||||||
|
7. **Failure modes & mitigations** — memory poisoning, staleness, context overflow, leakage between users, etc.
|
||||||
|
|
||||||
|
## Deliverable
|
||||||
|
|
||||||
|
Fill in the template below. Pseudocode blocks should be runnable-in-spirit (correct Python-ish, not perfect).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ANSWER — Cumin Memory Module
|
||||||
|
|
||||||
|
### 1. Memory taxonomy
|
||||||
|
|
||||||
|
| Type | What it stores | Example | Approx. size | Retention / TTL |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| Working | | | | |
|
||||||
|
| Episodic | | | | |
|
||||||
|
| Semantic | | | | |
|
||||||
|
| Procedural | | | | |
|
||||||
|
|
||||||
|
### 2. Storage backends (map to Ghaymah where possible)
|
||||||
|
|
||||||
|
| Memory type | Backend | Ghaymah product | Why this choice |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Working | | | |
|
||||||
|
| Episodic | | | |
|
||||||
|
| Semantic | | | |
|
||||||
|
| Procedural | | | |
|
||||||
|
|
||||||
|
### 3. Write policy
|
||||||
|
|
||||||
|
> _When and what does Cumin write? e.g. after every turn? on task completion? on error?_
|
||||||
|
|
||||||
|
### 4. Read / retrieval policy
|
||||||
|
|
||||||
|
> _How does Cumin decide what to recall? Give a ranking/scoring approach._
|
||||||
|
|
||||||
|
### 5. Memory API (pseudocode)
|
||||||
|
|
||||||
|
```python
|
||||||
|
# write your pseudocode here
|
||||||
|
```
|
||||||
|
|
||||||
|
### 6. Agent-loop integration (pseudocode)
|
||||||
|
|
||||||
|
```python
|
||||||
|
# show a single Cumin turn: recall -> act -> write
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7. Failure modes & mitigations
|
||||||
|
|
||||||
|
| Failure mode | Mitigation |
|
||||||
|
|---|---|
|
||||||
|
| | |
|
||||||
|
| | |
|
||||||
|
| | |
|
||||||
|
|
||||||
|
### 8. (Bonus) Compaction
|
||||||
|
|
||||||
|
> _Over time, episodic memory grows unbounded. How do you summarize/compact it?_
|
||||||
57
q2-arabic-tts-stt/arabic-tts-stt-finetune.md
Normal file
57
q2-arabic-tts-stt/arabic-tts-stt-finetune.md
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
# Q2 — Fine-tuning an Arabic TTS or STT
|
||||||
|
|
||||||
|
⏱ **Budget: ~15 minutes** · Weight: 25%
|
||||||
|
|
||||||
|
## Choose ONE option
|
||||||
|
|
||||||
|
- **Option A — TTS.** Fine-tune an open Arabic (or multilingual) text-to-speech model — e.g. Coqui **XTTS-v2**, **VITS**, or **StyleTTS2** — on a single-speaker Arabic dataset.
|
||||||
|
- **Option B — STT.** Fine-tune **Whisper** (e.g. `whisper-small`, `large-v3`) on Arabic speech — e.g. Mozilla **Common Voice `ar`**, **MGB-2**, or a custom corpus.
|
||||||
|
|
||||||
|
## Produce a runnable guide covering
|
||||||
|
|
||||||
|
1. **Model & dataset choice** — justify it; cite dataset sizes, license, and dialect (MSA vs. Egyptian vs. Gulf vs. Maghrebi).
|
||||||
|
2. **Data preprocessing** — audio resampling/normalization, text normalization, and the Arabic-specific gotchas: **diacritization (تشكيل)**, letter variants (أ/إ/آ, ة/ه, ى/ي), and (for STT) whether to strip diacritics before computing WER. Train/val split.
|
||||||
|
3. **Training setup** — framework (e.g. Hugging Face Trainer, Coqui TTS, NeMo), **LoRA vs. full fine-tune**, key hyperparameters (batch size, LR, epochs, warmup), hardware, and a rough time/cost estimate.
|
||||||
|
4. **Evaluation** — for STT: **WER/CER** (and how to compute them fairly for Arabic); for TTS: **MOS**, **speaker similarity (SECS)**, and using an ASR to measure intelligibility. Include the actual metric definitions/commands.
|
||||||
|
5. **Deployment on Ghaymah** — GPU sizing, container vs. function, serving stack, latency, and how the model is served behind an API.
|
||||||
|
6. **Risks & mitigations** — dialect coverage, hallucination, diacritic fidelity, MSA vs. dialect mismatch, data licensing.
|
||||||
|
|
||||||
|
Include **real code snippets** (Python / Hugging Face / CLI). Cite sources inline.
|
||||||
|
|
||||||
|
## Deliverable
|
||||||
|
|
||||||
|
Fill in the template below. State clearly which option you chose.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ANSWER — Arabic TTS/STT Fine-tune
|
||||||
|
|
||||||
|
**Option chosen:** A / B (delete one)
|
||||||
|
|
||||||
|
### 1. Model & dataset choice
|
||||||
|
|
||||||
|
> _write here_
|
||||||
|
|
||||||
|
### 2. Data preprocessing
|
||||||
|
|
||||||
|
> _write here + code snippets_
|
||||||
|
|
||||||
|
### 3. Training setup
|
||||||
|
|
||||||
|
> _write here + code/config snippets_
|
||||||
|
|
||||||
|
### 4. Evaluation
|
||||||
|
|
||||||
|
> _write here + metric definitions/commands_
|
||||||
|
|
||||||
|
### 5. Deployment on Ghaymah
|
||||||
|
|
||||||
|
> _write here_
|
||||||
|
|
||||||
|
### 6. Risks & mitigations
|
||||||
|
|
||||||
|
| Risk | Mitigation |
|
||||||
|
|---|---|
|
||||||
|
| | |
|
||||||
|
| | |
|
||||||
|
| | |
|
||||||
29
q3-ghaymah-signup/ghaymah-signup.md
Normal file
29
q3-ghaymah-signup/ghaymah-signup.md
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
# Q3 — Sign up to Ghaymah
|
||||||
|
|
||||||
|
⏱ **Budget: ~5 minutes** · Weight: 5%
|
||||||
|
|
||||||
|
## The task
|
||||||
|
|
||||||
|
1. Go to **https://deploy.ghaymah.systems** and create an account.
|
||||||
|
2. Spend a few minutes clicking around the dashboard. Note the main products and pricing you see.
|
||||||
|
3. **Never commit credentials.** If you take a screenshot, reference its filename — do not upload anything containing passwords/tokens.
|
||||||
|
|
||||||
|
## ANSWER — Ghaymah signup
|
||||||
|
|
||||||
|
### 1. Signed up?
|
||||||
|
|
||||||
|
```
|
||||||
|
Yes / No — <date>
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Products I observed
|
||||||
|
|
||||||
|
> _list what the platform offers (compute, storage, databases, AI, etc.)_
|
||||||
|
|
||||||
|
### 3. Pricing observations
|
||||||
|
|
||||||
|
> _note entry-tier pricing and billing currencies you noticed_
|
||||||
|
|
||||||
|
### 4. One thing that surprised me (or one thing I'd improve)
|
||||||
|
|
||||||
|
> _write here_
|
||||||
22
q4-static-site-deploy/site/index.html
Normal file
22
q4-static-site-deploy/site/index.html
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="ar" dir="rtl">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>مرحباً غيمة 👋</title>
|
||||||
|
<link rel="stylesheet" href="style.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main class="card">
|
||||||
|
<p class="eyebrow">Ghaymah GenAI Interview — Q4</p>
|
||||||
|
<h1>مرحباً، أنا <span class="highlight">اسمك هنا</span></h1>
|
||||||
|
<p class="subtitle">This is my static site, deployed on <strong>Ghaymah</strong>. Replace this text with your CV, your Q1 memory design, or anything you like.</p>
|
||||||
|
<div class="badges">
|
||||||
|
<span class="badge">قبيلة Qabilah</span>
|
||||||
|
<span class="badge">مُرتكز Mortakaz</span>
|
||||||
|
<span class="badge">غيمة Ghaymah</span>
|
||||||
|
</div>
|
||||||
|
<p class="footer">Built in ~10 minutes · Deployed on deploy.ghaymah.systems</p>
|
||||||
|
</main>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
48
q4-static-site-deploy/site/style.css
Normal file
48
q4-static-site-deploy/site/style.css
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
:root {
|
||||||
|
--ink: #1a2332;
|
||||||
|
--muted: #5b6675;
|
||||||
|
--accent: #0e9f8f;
|
||||||
|
--card: #ffffff;
|
||||||
|
--bg: linear-gradient(135deg, #f4f7fb 0%, #e8f1f2 100%);
|
||||||
|
}
|
||||||
|
* { box-sizing: border-box; }
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
min-height: 100vh;
|
||||||
|
display: grid;
|
||||||
|
place-items: center;
|
||||||
|
font-family: "Segoe UI", Tahoma, system-ui, sans-serif;
|
||||||
|
background: var(--bg);
|
||||||
|
color: var(--ink);
|
||||||
|
}
|
||||||
|
.card {
|
||||||
|
background: var(--card);
|
||||||
|
max-width: 620px;
|
||||||
|
margin: 2rem;
|
||||||
|
padding: 2.5rem 2.75rem;
|
||||||
|
border-radius: 18px;
|
||||||
|
box-shadow: 0 20px 60px rgba(20, 40, 60, 0.12);
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.eyebrow {
|
||||||
|
margin: 0 0 0.5rem;
|
||||||
|
font-size: 0.8rem;
|
||||||
|
letter-spacing: 0.14em;
|
||||||
|
text-transform: uppercase;
|
||||||
|
color: var(--accent);
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
h1 { margin: 0.25rem 0 0.75rem; font-size: 2rem; line-height: 1.3; }
|
||||||
|
.highlight { color: var(--accent); }
|
||||||
|
.subtitle { color: var(--muted); line-height: 1.7; margin: 0 auto 1.75rem; max-width: 44ch; }
|
||||||
|
.badges { display: flex; gap: 0.5rem; justify-content: center; flex-wrap: wrap; margin-bottom: 1.75rem; }
|
||||||
|
.badge {
|
||||||
|
background: #eef6f5;
|
||||||
|
color: #0b7267;
|
||||||
|
border: 1px solid #d3e9e6;
|
||||||
|
padding: 0.4rem 0.9rem;
|
||||||
|
border-radius: 999px;
|
||||||
|
font-size: 0.85rem;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
.footer { color: var(--muted); font-size: 0.8rem; margin: 0; }
|
||||||
36
q4-static-site-deploy/static-site-deploy.md
Normal file
36
q4-static-site-deploy/static-site-deploy.md
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
# Q4 — Deploy a static website on Ghaymah
|
||||||
|
|
||||||
|
⏱ **Budget: ~12 minutes** · Weight: 15%
|
||||||
|
|
||||||
|
## The task
|
||||||
|
|
||||||
|
1. **Build** a simple static website. It can be anything — suggestions:
|
||||||
|
- a "hello, Ghaymah" landing page,
|
||||||
|
- your personal CV / portfolio,
|
||||||
|
- a one-page summary of your **Q1 memory-module design**.
|
||||||
|
2. Put your source files under `site/` (there's a starter `index.html` + `style.css` you can replace or extend).
|
||||||
|
3. **Deploy** it to Ghaymah — either via static hosting / a storage block, or inside a container/function. Follow Ghaymah's flow for making the site public.
|
||||||
|
4. **Record the public URL** in the template below.
|
||||||
|
5. Write 2–4 sentences about how the deploy went.
|
||||||
|
|
||||||
|
## ANSWER — Static site deploy
|
||||||
|
|
||||||
|
### 1. What I built
|
||||||
|
|
||||||
|
> _one line_
|
||||||
|
|
||||||
|
### 2. Live URL
|
||||||
|
|
||||||
|
```
|
||||||
|
https://<your-site>.ghaymah.systems/ (or the URL Ghaymah gave you)
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. How I deployed (steps)
|
||||||
|
|
||||||
|
1.
|
||||||
|
2.
|
||||||
|
3.
|
||||||
|
|
||||||
|
### 4. What went well / what was hard
|
||||||
|
|
||||||
|
> _write here_
|
||||||
المرجع في مشكلة جديدة
حظر مستخدم