This is the website I put together for Women Helping All People (WHAP), a non-profit that does a lot for the Marin City, CA community. My goal here was to build a modern, easy-to-use site that really shows off their mission, all their awesome programs, and the impact they're making.
I tried to cover all the bases with this site, based on their previous and existing website. Here's what you'll find:
- Home Page: This is like the front door, giving you a quick rundown of what WHAP is all about and their main services.
- Programs & Services: This page dives deep into all the different programs WHAP offers, like the After-School "Safe House" and the Computer Learning Center. It's got all the details you'd need.
- Education: This section is all about the WHAP Scholastic Academy, their private school, and what makes it special.
- History: I put together a timeline here that walks you through how WHAP got started and how it's grown over the years. It's a pretty inspiring story.
- News & Events: Wanna know what's happening or what's coming up? This is the spot. I tried to keep it updated with all the latest.
- About: Here, you can learn about the amazing people who run WHAP, some of the awards they've received, and any times they've been featured in the media.
- Contact Us: If you need to get in touch, this page has all their contact info. There's also a form if you prefer to send a message directly.
- Support: This is where you can find out how to lend a hand, whether you're looking to donate or volunteer your time. Every bit helps, for real.
To get this project up and running on your own machine, you'll need a few things installed. It's pretty standard stuff for a web project:
- Node.js: You'll need version 18 or newer.
- npm (Node Package Manager) or Yarn: Either one works for managing the project's dependencies.
- Git: This is how you'll grab the code from GitHub.
Alright, let's get you set up. It's pretty straightforward:
-
Clone the repository: First, you gotta get the code onto your computer. Open up your terminal and run this:
git clone https://github.com/daaimah123/WHAP_Website.git cd WHAP_Website -
Install dependencies: Once you're in the project folder, you need to install all the bits and pieces the project relies on. This might take a minute, so grab a coffee or something.
npm install # Or, if you're a Yarn person: yarn install -
Clean up Git tracking (if needed): If you've had any trouble pushing to GitHub before, especially with "large file" errors, it might be because some big files (like
node_modules) got accidentally tracked. I've included a.gitignorefile to prevent this, but if you've already committed them, you might need to clean up your Git history. This command helps make sure you're only tracking the actual source code:git rm -r --cached . git add . git commit -m "Clean up repository tracking"
After this, you should be good to go for future pushes.
Once you've got the site running locally, navigating it is super intuitive. I tried to make it as user-friendly as possible.
- Navigation Bar: At the very top, you'll see links to all the main sections of the site. If you're on a smaller screen, like a phone, those links will be tucked away behind a little hamburger menu icon. Just tap it to open or close the navigation.
- Call to Action Buttons: Throughout the site, you'll spot buttons like "Our Programs" or "Donate Now." These are there to quickly take you to the most relevant information or actions.
- Smooth Scrolling: I set up the site so that when you click on internal links (like jumping to a section on the same page), it'll smoothly scroll down to that spot instead of just jumping. It's a nice little touch.
So, how'd I build this thing? Here's a peek under the hood at the main technologies and how things are structured:
- Next.js: This is the main framework I used. It's a React framework that handles all the heavy lifting like routing, server-side rendering (SSR), and making sure everything performs well.
- React: I used React for building all the individual pieces of the user interface, like buttons, cards, and sections. It helps keep the code organized and reusable.
- Tailwind CSS: For all the styling, I went with Tailwind CSS. It's a "utility-first" framework, which means I used a bunch of small, pre-defined classes to style elements directly in the JSX. It makes styling super fast and consistent.
- JavaScript: Of course, JavaScript is powering all the interactive bits, like the mobile navigation toggle and some of the scroll animations you'll see.
As for the file structure, it's pretty standard for a Next.js app:
- The main UI components are in the
components/directory. - Each major page of the website has its own file (like
page.tsx) within its respective folder in theapp/directory. - Global styles are in
app/globals.css. - The
public/folder holds static assets like thescript.jsfile for some client-side interactions.
When I was putting this together, I really wanted the site to feel welcoming and professional, while staying true to WHAP's existing brand.
- Color Palette: I stuck closely to the gold and warm tones from the original
whapmc.orgsite. You'll see that gold used for headers, accents, and any interactive buttons. The background is mostly light to keep things clean and easy to read. - Typography: I picked a couple of fonts to give the site a good vibe.
Interis used for most of the body text because it's super readable, andPlayfair Displayis used for headings to give it a more classic, impactful feel. - Responsiveness: This was a big one. I made sure the layout adjusts smoothly across different screen sizes. So, whether you're checking it out on a tiny phone or a huge desktop monitor, it should look good and be easy to use.
- Images: Instead of just using generic placeholders, I pulled in actual images from the WHAP website and their GitHub repository. I think it makes the site feel a lot more authentic and personal. I also updated the
next.config.jsfile to make sure Next.js plays nice with these external image sources.
Sometimes things don't go perfectly, and that's okay! If you run into any hiccups, here are some common issues and how I'd usually try to fix 'em:
- "Large files detected" when pushing to GitHub: This is a classic one. It almost always means you're trying to push big files like your
node_modulesfolder or the.nextbuild output. Make sure your.gitignorefile is set up correctly (I included one in the project!). If you've already committed these big files, you'll need to clean up your Git history. Try runninggit rm -r --cached .followed bygit add .andgit commit -m "Clean up repository tracking". That usually does the trick. - Images not showing up: If you're seeing broken image icons or just alt text, first check the image URLs in the components. Sometimes external image hosts can be a bit finicky, or the URL might have changed. I've updated the
next.config.jsto allow images fromwhapmc.org,github.com, andwsimg.com, so that should cover most of the images I've used. - Vercel 404 NOT_FOUND error: This one can be a bit puzzling. It means Vercel can't find your deployed project. First, make sure your project is correctly linked to Vercel (you can do this through the Vercel CLI or dashboard). Also, double-check that your
package.jsonhas the correctbuildscript ("build": "next build"). Sometimes, just logging out and back into the Vercel CLI (vercel logoutthenvercel login) can magically fix it. If it keeps happening, grab that error ID (likesfo1::...) and reach out to Vercel support; they can look up exactly what's going on behind the scenes.
Wanna see this website running right on your own computer? It's super easy.
- Make sure you've already followed the Installation/Setup steps I laid out above. That gets all the code and dependencies ready.
- Once that's done, just open up your terminal, make sure you're in the
WHAP_Websiteproject directory, and run this command:npm run dev - After it starts up, it'll usually tell you where to go. Open your web browser and navigate to
http://localhost:3000(or whatever port the terminal output tells you).
And that's it! You should see the WHAP website up and running, ready for you to explore.