Compare commits
20 Commits
de8968d98d
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
| a3dd5a1c50 | |||
| fdfa6a26be | |||
| 62617002ed | |||
| d14d7334cb | |||
| c7cfd0dda3 | |||
| 3345763cb1 | |||
| a1e902476f | |||
| d19874833e | |||
| 6cf9d04a3a | |||
| 4a02d28253 | |||
| 97084492a3 | |||
| a7ba4a88ad | |||
| e16974a59a | |||
| 69133838a3 | |||
| d60976b30d | |||
| 03367be183 | |||
| 77541595f2 | |||
| 8da5bfb9ba | |||
| 87a565c0d1 | |||
| 12327c2210 |
@@ -12,10 +12,10 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
uses: docker/setup-buildx-action@v4
|
||||
|
||||
- name: Log in to Docker Hub
|
||||
uses: docker/login-action@v3
|
||||
@@ -25,7 +25,7 @@ jobs:
|
||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||
|
||||
- name: Build and push Docker image for main
|
||||
uses: docker/build-push-action@v6
|
||||
uses: docker/build-push-action@v7
|
||||
with:
|
||||
context: .
|
||||
push: true
|
||||
@@ -35,7 +35,7 @@ jobs:
|
||||
if: github.ref == 'refs/heads/main'
|
||||
|
||||
- name: Build and push Docker image for staging
|
||||
uses: docker/build-push-action@v6
|
||||
uses: docker/build-push-action@v7
|
||||
with:
|
||||
context: .
|
||||
push: true
|
||||
|
||||
+4
-4
@@ -1,20 +1,20 @@
|
||||
FROM node:20-alpine AS development-dependencies-env
|
||||
FROM node:24-alpine AS development-dependencies-env
|
||||
COPY . /app
|
||||
WORKDIR /app
|
||||
RUN npm ci
|
||||
|
||||
FROM node:20-alpine AS production-dependencies-env
|
||||
FROM node:24-alpine AS production-dependencies-env
|
||||
COPY ./package.json package-lock.json /app/
|
||||
WORKDIR /app
|
||||
RUN npm ci --omit=dev
|
||||
|
||||
FROM node:20-alpine AS build-env
|
||||
FROM node:24-alpine AS build-env
|
||||
COPY . /app/
|
||||
COPY --from=development-dependencies-env /app/node_modules /app/node_modules
|
||||
WORKDIR /app
|
||||
RUN npm run build
|
||||
|
||||
FROM node:20-alpine
|
||||
FROM node:24-alpine
|
||||
COPY ./package.json package-lock.json /app/
|
||||
COPY --from=production-dependencies-env /app/node_modules /app/node_modules
|
||||
COPY --from=build-env /app/build /app/build
|
||||
|
||||
+27
-54
@@ -140,6 +140,31 @@ export default function Index() {
|
||||
<div className="container mx-auto max-w-4xl">
|
||||
<h2 className="mb-12 text-3xl font-bold text-center text-slate-900 dark:text-slate-100">Experience</h2>
|
||||
|
||||
<div className="rounded-lg border border-slate-200 bg-white text-slate-950 shadow-sm dark:border-slate-800 dark:bg-slate-950 dark:text-slate-50 mb-6">
|
||||
<div className="flex flex-col space-y-1.5 p-6">
|
||||
<div className="flex items-start justify-between">
|
||||
<div className="flex items-center gap-4">
|
||||
<div className="p-2 bg-slate-900/10 dark:bg-slate-50/10 rounded-lg">
|
||||
<Briefcase className="h-6 w-6 text-slate-900 dark:text-slate-50" />
|
||||
</div>
|
||||
<div>
|
||||
<h3 className="text-2xl font-semibold leading-none tracking-tight">Member of Web Development SIG</h3>
|
||||
<p className="text-sm text-slate-600 dark:text-slate-400 text-base">RISTEK Fakultas Ilmu Komputer</p>
|
||||
</div>
|
||||
</div>
|
||||
<span className="inline-flex items-center rounded-full border border-slate-200 px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-slate-950 focus:ring-offset-2 dark:border-slate-800 dark:focus:ring-slate-300 text-slate-600 dark:text-slate-400 bg-slate-100 dark:bg-slate-800">
|
||||
Present
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div className="p-6 pt-0">
|
||||
<div className="flex items-center gap-2 text-sm text-slate-600 dark:text-slate-400 mb-4">
|
||||
<Calendar className="h-4 w-4" />
|
||||
<span>March 2026 - Present</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="rounded-lg border border-slate-200 bg-white text-slate-950 shadow-sm dark:border-slate-800 dark:bg-slate-950 dark:text-slate-50 mb-6">
|
||||
<div className="flex flex-col space-y-1.5 p-6">
|
||||
<div className="flex items-start justify-between">
|
||||
@@ -149,7 +174,7 @@ export default function Index() {
|
||||
</div>
|
||||
<div>
|
||||
<h3 className="text-2xl font-semibold leading-none tracking-tight">Back-end Developer Intern</h3>
|
||||
<p className="text-sm text-slate-600 dark:text-slate-400 text-base">PT eBdesk Teknologi</p>
|
||||
<p className="text-sm text-slate-600 dark:text-slate-400 text-base">PT Indonesia Indicator (a subsidiary of PT Ebdesk)</p>
|
||||
</div>
|
||||
</div>
|
||||
<span className="inline-flex items-center rounded-full border border-slate-200 px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-slate-950 focus:ring-offset-2 dark:border-slate-800 dark:focus:ring-slate-300 text-slate-950 dark:text-slate-50">
|
||||
@@ -368,59 +393,7 @@ export default function Index() {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<h3 className="mb-8 text-2xl font-bold text-center text-slate-900 dark:text-slate-100">
|
||||
Work Accomplishments
|
||||
</h3>
|
||||
<div className="rounded-lg border border-slate-200 bg-white text-slate-950 shadow-sm dark:border-slate-800 dark:bg-slate-950 dark:text-slate-50 max-w-4xl mx-auto">
|
||||
<div className="flex flex-col space-y-1.5 p-6">
|
||||
<h3 className="text-2xl font-semibold leading-none tracking-tight text-2xl">
|
||||
Dynamic Web Crawling System
|
||||
</h3>
|
||||
<p className="text-sm text-slate-600 dark:text-slate-400 text-lg">
|
||||
Developed during my internship at PT Indonesia Indicator, this revolutionary crawling system is
|
||||
capable of extracting data from various websites without needing to create a new crawler for each
|
||||
website. This system allows for dynamic and more efficient data retrieval.
|
||||
</p>
|
||||
</div>
|
||||
<div className="p-6 pt-0">
|
||||
<div className="grid md:grid-cols-2 gap-6">
|
||||
<div>
|
||||
<h4 className="font-semibold mb-2 text-slate-900 dark:text-slate-100">Key Features:</h4>
|
||||
<ul className="list-disc list-inside text-slate-600 dark:text-slate-400 space-y-1 mb-4">
|
||||
<li>Dynamic configuration for different website structures</li>
|
||||
<li>Scalable backend architecture using Go</li>
|
||||
<li>Real-time monitoring dashboard</li>
|
||||
<li>Efficient data processing and management</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div>
|
||||
<h4 className="font-semibold mb-2 text-slate-900 dark:text-slate-100">Technologies:</h4>
|
||||
<div className="flex flex-wrap gap-2 mb-4">
|
||||
<span className="inline-flex items-center rounded-full border border-slate-200 px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-slate-950 focus:ring-offset-2 dark:border-slate-800 dark:focus:ring-slate-300 text-slate-950 dark:text-slate-50">
|
||||
Go
|
||||
</span>
|
||||
<span className="inline-flex items-center rounded-full border border-slate-200 px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-slate-950 focus:ring-offset-2 dark:border-slate-800 dark:focus:ring-slate-300 text-slate-950 dark:text-slate-50">
|
||||
Tailwind CSS
|
||||
</span>
|
||||
<span className="inline-flex items-center rounded-full border border-slate-200 px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-slate-950 focus:ring-offset-2 dark:border-slate-800 dark:focus:ring-slate-300 text-slate-950 dark:text-slate-50">
|
||||
HTMX
|
||||
</span>
|
||||
<span className="inline-flex items-center rounded-full border border-slate-200 px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-slate-950 focus:ring-offset-2 dark:border-slate-800 dark:focus:ring-slate-300 text-slate-950 dark:text-slate-50">
|
||||
Templ
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex gap-4">
|
||||
<span className="inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-white transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-slate-950 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 dark:ring-offset-slate-950 dark:focus-visible:ring-slate-300 bg-slate-900 text-slate-50 hover:bg-slate-900/90 dark:bg-slate-50 dark:text-slate-900 dark:hover:bg-slate-50/90 h-10 px-4 py-2 opacity-50 cursor-not-allowed">
|
||||
<Briefcase className="mr-2 h-4 w-4" />
|
||||
Work Accomplishment
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
Generated
+323
-296
File diff suppressed because it is too large
Load Diff
+3
-3
@@ -12,7 +12,7 @@
|
||||
"@react-router/node": "^7.7.1",
|
||||
"@react-router/serve": "^7.7.1",
|
||||
"isbot": "^5.1.27",
|
||||
"lucide-react": "^0.575.0",
|
||||
"lucide-react": "^0.577.0",
|
||||
"react": "^19.1.0",
|
||||
"react-dom": "^19.1.0",
|
||||
"react-router": "^7.7.1",
|
||||
@@ -21,12 +21,12 @@
|
||||
"devDependencies": {
|
||||
"@react-router/dev": "^7.7.1",
|
||||
"@tailwindcss/vite": "^4.1.11",
|
||||
"@types/node": "^20",
|
||||
"@types/node": "^24.0.0",
|
||||
"@types/react": "^19.1.2",
|
||||
"@types/react-dom": "^19.1.2",
|
||||
"tailwindcss": "^4.1.11",
|
||||
"typescript": "^5.8.3",
|
||||
"vite": "^6.3.3",
|
||||
"vite": "^7.0.0",
|
||||
"vite-tsconfig-paths": "^6.0.0"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user