- Live Demo: https://joellaggui.vercel.app/
- Vite – Frontend build tool
- React – JavaScript library for building UIs
- TypeScript – Typed JavaScript
- Chakra UI – Component library for styling
- EmailJS – For email sending functionality
- Formik – For form handling
- Fork this repository to your GitHub account.
- Clone the forked repository:
git clone https://github.com/GITLAGGUI/Official-Portfolio.git
- Navigate to the project folder:
cd Official-Portfolio - Install all dependencies:
npm install
- Start the development server:
npm run dev
- Open your browser and go to http://localhost:5173 to view your local version.
This project was designed to be developer-friendly and customizable.
- Go to the
/public/datafolder. - You'll find simple
.tsfiles containing your:- Bio
- Skills
- Projects
- Contact Info
- Modify those JavaScript objects with your own content.
- Restart the dev server to apply changes:
npm run dev
No complicated setup or backend configuration required!
You can deploy this portfolio in minutes using Vercel:
- Fork the repo.
- Head over to https://vercel.com/new.
- Connect your GitHub account and import your forked repo.
- Vercel will auto-detect the project settings (no manual config needed).
- Click Deploy, and your portfolio will be live almost instantly!
💡 All necessary Vercel settings are already in place in the project structure.
This portfolio uses EmailJS for handling contact form submissions directly from the frontend, eliminating the need for a custom backend.
- Service: SERVICE_ID
- Template: TEMPLATE_ID
- Recipient: jlaggui47@gmail.com
- Library: @emailjs/browser (already installed)
The contact form sends emails directly through EmailJS using the configuration in /src/utils/sendEmail.ts:
import emailjs from '@emailjs/browser';
// EmailJS Configuration
const SERVICE_ID = 'YOUR SERVICE_ID';
const TEMPLATE_ID = 'YOUR TEMPLATE_ID';
const PUBLIC_KEY = 'YOUR PUBLIC_KEY';
export const sendEmail = async (values: {
name: string;
email: string;
subject: string;
message: string;
}) => {
const templateParams = {
from_name: values.name,
reply_to: values.email,
subject: values.subject,
message: values.message,
to_email: 'jlaggui47@gmail.com',
};
return await emailjs.send(SERVICE_ID, TEMPLATE_ID, templateParams, PUBLIC_KEY);
};If you want to configure your own EmailJS service:
-
Create EmailJS Account
- Sign up at https://www.emailjs.com/
- Create a new email service (Gmail recommended)
-
Configure Email Template
- Create a template with variables:
{{from_name}},{{reply_to}},{{subject}},{{message}} - Note your Service ID and Template ID
- Create a template with variables:
-
Update Configuration
- Replace the constants in
/src/utils/sendEmail.tswith your own IDs - Update the recipient email address
- Replace the constants in
-
Test Implementation
- Run the development server:
npm run dev - Navigate to the contact page and send a test message
- Run the development server:
💡 Benefits: No backend required, instant setup, reliable delivery, and free tier available.
- Website – Joel Laggui Jr.
- LinkedIn – Joel Laggui Jr.
