Skip to content

Add job board with example data. #1197

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 38 commits into from
May 8, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
654b848
Add job board with example data.
nikoshell Apr 30, 2025
a418850
Merge branch 'ep2025' into ep2025-job-board
nikoshell Apr 30, 2025
9b7c9c8
Update responsive design.
nikoshell Apr 30, 2025
822fd55
Create single component for TwoColc.
nikoshell Apr 30, 2025
5010718
Fix TS issues.
nikoshell Apr 30, 2025
b1a7c94
Merge branch 'ep2025' into ep2025-job-board
clytaemnestra Apr 30, 2025
d10618f
Combine sponsors and companies.
nikoshell Apr 30, 2025
e5b2326
Fix TS issue. Ammend commit to re-run RTD preview.
nikoshell Apr 30, 2025
81e4d17
Merge branch 'ep2025' into ep2025-job-board
nikoshell May 2, 2025
92c36a5
Companies -> sponsors.
nikoshell May 4, 2025
53b0aa1
Job card style.
nikoshell May 4, 2025
bfe1032
Add sponsor display images.
nikoshell May 4, 2025
feb60a0
Fix responsive.
nikoshell May 4, 2025
0f661ff
Fix styles.
nikoshell May 4, 2025
a8a5ee8
Clean up.
nikoshell May 5, 2025
8b5e085
Fix TS warnings.
nikoshell May 1, 2025
b0dd9ef
Epic - broken localhost image refferer.
nikoshell May 1, 2025
be7de8b
Fix YouTube types.
nikoshell May 5, 2025
3d767e0
Fix YouTube types.
nikoshell May 5, 2025
5667366
Fix all warnings.
nikoshell May 5, 2025
4c51c57
Merge branch 'ep2025' into ep2025-job-board
nikoshell May 5, 2025
182c31c
Merge branch 'ep2025-check' into ep2025-job-board
nikoshell May 5, 2025
9395359
Remove acme records.
nikoshell May 5, 2025
523f286
Add sections.
nikoshell May 5, 2025
0f226b5
Hide sponsor card on mobile, fix ts warnings.
nikoshell May 5, 2025
9518e51
Merge branch 'ep2025' into ep2025-job-board
nikoshell May 6, 2025
2187b97
Fix brands icons.
nikoshell May 6, 2025
3001a20
Add Numberly content.
nikoshell May 7, 2025
0381fab
Add community partners.
nikoshell May 7, 2025
67c1f4b
Fix for community partners.
nikoshell May 7, 2025
c90c73b
Filter out drafts, update descriptions.
nikoshell May 8, 2025
4e38ac2
Add social links to sponsor.
nikoshell May 8, 2025
bc349f6
Add draft to job position.
nikoshell May 8, 2025
832176a
Remove about for partners and fix for component.
nikoshell May 8, 2025
5f0de3d
Disable socials.
nikoshell May 8, 2025
eadf26a
Fix issues from comments.
nikoshell May 8, 2025
68c9158
Remove console log.
nikoshell May 8, 2025
ed273e9
Update sponsor data.
nikoshell May 8, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@
"@types/js-yaml": "^4.0.9",
"prettier": "^3.5.3",
"prettier-plugin-astro": "^0.14.1",
"tsx": "^4.19.4",
"puppeteer": "^24.7.2",
"tsx": "^4.19.4",
"typescript": "^5.8.3"
},
"prettier": {
Expand Down
487 changes: 168 additions & 319 deletions pnpm-lock.yaml

Large diffs are not rendered by default.

Binary file added public/draft.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletions src/components/BaseHead.astro
Original file line number Diff line number Diff line change
Expand Up @@ -57,3 +57,9 @@ const { title, description, image = "/social-card.png" } = Astro.props;
is:inline
data-domain="ep2025.europython.eu"
src="https://plausible.io/js/script.js"></script>

<script
defer
is:inline
data-domain="ep2025.europython.eu"
src="https://plausible.io/js/script.outbound-links.js"></script>
15 changes: 15 additions & 0 deletions src/components/CardContent.astro
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
import { getEntry } from "astro:content";
import { marked } from 'marked';
const { collection, entry:entryId } = Astro.props;

const entry = await getEntry(collection, entryId);
const html = entry && entry.body ? marked.parse(entry.body) : "";

---

{ html &&
<div class="mb-2 prose prose-li:m-0 prose-ul:m-0 prose-ul:mb-2 prose-a:underline prose-h1:text-text prose-headings:font-title prose-headings:text-text prose-a:text-text hover:prose-a:text-primary-hover prose-strong:text-text prose-strong:font-bold prose-li:marker:text-text p-6">
<article set:html={html} />
</div>
}
94 changes: 94 additions & 0 deletions src/components/JobCard.astro
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
---
import { getEntry } from "astro:content";
const { job:jobId, sponsor:sponsorId } = Astro.props;

const job = await getEntry("jobs", jobId);
if (!job) {
throw new Error(`Job with ID "${jobId}" not found`);
}

const sponsor = await getEntry("sponsors", sponsorId);

if (!sponsor) {
throw new Error(`Sponsor with ID "${sponsorId}" not found`);
}

// TODO: add tags
const { title, location, type, level, salary, description, responsibilities, requirements, benefits, apply_link, draft } = job.data;

---

<div class="mb-6 last:mb-0 rounded-lg shadow-md bg-white">
<div class=`flex-1 p-6 ${draft ? "draft": ""}`>
<a href={`/sponsor/${jobId}`}>
<h2 class="text-3xl font-bold mb-2">{title}</h2>
</a>

<a class="lg:hidden text-[#1a56db] hover:text-[#4f46e5] text-xl pb-2 inline-block font-bold" href={`/sponsor/${sponsor.id}`}>
{sponsor.data.name}
</a>

{ level && type && location &&
<p class="text-gray-600 mb-2">{level} • {type} • {location}</p>
}
<p class="text-gray-700 mb-4">{salary}</p>
<p class="mb-3">{description}</p>

{ responsibilities &&
<h3 class="text-xl font-semibold mb-2">Responsibilities</h3>
<ul class="list-disc list-inside mb-4">
{responsibilities.map((item:string ) => <li>{item}</li>)}
</ul>
}

{ requirements &&
<h3 class="text-xl font-semibold mb-2">Requirements</h3>
<ul class="list-disc list-inside mb-4">
{requirements.map((item:string) => <li>{item}</li>)}
</ul>
}

{ benefits &&
<h3 class="text-xl font-semibold mb-2">Benefits</h3>
<ul class="list-disc list-inside mb-6">
{benefits.map((item:string) => <li>{item}</li>)}
</ul>
}

<a
href={apply_link}
target="_blank"
class="apply-btn"
>
Apply Now
</a>
</div>
</div>

<style>

.apply-btn {
display: inline-block;
padding: 8px 24px;
color: white;
font-weight: 700;
border-radius: 9999px;
border: 1px solid transparent;
text-decoration: none;
transition: all 0.1s ease;
background: linear-gradient(to right, #16a34a, #22c55e);
}

.apply-btn:hover {
color:white;
}

a{
text-decoration: underline;
}
a:hover {
color: var(--color-primary-hover);
text-decoration: underline;
}

</style>
1 change: 0 additions & 1 deletion src/components/Search.astro
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ document.addEventListener("DOMContentLoaded", function () {
let selectedIndex = -1;

function openSearch() {
console.log("open");
openModal.click();
if (searchInput) {
searchInput.value = "Tips";
Expand Down
Loading