Personal portfolio website built with vanilla HTML, CSS, and JavaScript. Hosted on GitHub Pages.
├── index.html # Main single-page site
├── assets/
│ ├── css/style.css # Styles
│ └── js/main.js # JavaScript
├── CNAME # Custom domain config
└── bluesky-analytics/ # Streamlit app (separate repo)
-
Create GitHub repository:
# Initialize git in this directory git init git add . git commit -m "Initial commit" # Create repo on GitHub named: patrickfcallahan.github.io # Then push: git remote add origin https://github.com/patrickfcallahan/patrickfcallahan.github.io.git git branch -M main git push -u origin main
-
Enable GitHub Pages:
- Go to repo Settings → Pages
- Source: Deploy from a branch
- Branch:
main// (root) - Save
-
Configure custom domain:
- In repo Settings → Pages → Custom domain
- Enter:
patrick-f-callahan.com - Check "Enforce HTTPS"
-
DNS (already done in Cloudflare):
- A records pointing to GitHub's IPs
- CNAME for
wwwpointing topatrickfcallahan.github.io
Your site will be live at https://patrick-f-callahan.com within minutes.
The bluesky-analytics/ folder should be deployed as a separate repository:
-
Create separate repo:
cd bluesky-analytics git init git add . git commit -m "Initial commit" # Create repo on GitHub named: bluesky-analytics git remote add origin https://github.com/patrickfcallahan/bluesky-analytics.git git branch -M main git push -u origin main
-
Deploy to Streamlit Cloud:
- Go to share.streamlit.io
- Sign in with GitHub
- Click "New app"
- Select your
bluesky-analyticsrepo - Main file:
app.py - Click "Deploy"
-
Add Snowflake secrets:
- In Streamlit Cloud, go to your app
- Click "Settings" (⚙️) → "Secrets"
- Add your Snowflake credentials:
[snowflake] user = "your_username" password = "your_password" account = "your_account.region" warehouse = "your_warehouse" database = "your_database" schema = "your_schema"
-
Update main site link:
- Once deployed, update the Streamlit URL in
index.html - Default will be:
https://bluesky-analytics.streamlit.app
- Once deployed, update the Streamlit URL in
Simply open index.html in a browser, or use a local server:
# Python
python -m http.server 8000
# Node.js
npx serve .cd bluesky-analytics
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
cp .streamlit/secrets.toml.example .streamlit/secrets.toml
# Edit secrets.toml with your credentials
streamlit run app.pyEdit index.html to update:
- Name and title
- About section
- Experience/timeline
- Skills
- Project descriptions
- Contact links (email, GitHub, LinkedIn)
Modify assets/css/style.css:
- Colors: Update CSS variables in
:root - Fonts: Change Google Fonts import and
--font-sans - Layout: Adjust spacing and breakpoints
MIT