From 99a0eb86090bb574caf55d7763411a8c5afd17ff Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 23 Feb 2026 03:47:08 +0000 Subject: [PATCH 1/2] Add Fable social profile and referral link with disclaimer - Add Fable book icon SVG to public/icons/ - Add Fable social profile link to links page and footer Connect section - Add Fable referral link to affiliate/referral links section with disclaimer - Render the referral links section on the links page Co-authored-by: Amanda Nelson --- public/icons/fable.svg | 6 ++++++ src/app/links/page.tsx | 38 +++++++++++++++++++++++++++++++++++--- src/components/Footer.tsx | 1 + 3 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 public/icons/fable.svg diff --git a/public/icons/fable.svg b/public/icons/fable.svg new file mode 100644 index 0000000..cafc7f5 --- /dev/null +++ b/public/icons/fable.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/app/links/page.tsx b/src/app/links/page.tsx index c000f44..26d956e 100644 --- a/src/app/links/page.tsx +++ b/src/app/links/page.tsx @@ -37,6 +37,12 @@ const socialLinks: LinkItem[] = [ color: 'bg-white/10 hover:bg-white/20', icon: '/icons/bluesky.svg' }, + { + name: 'Fable', + url: 'https://fable.co/fabler/pythoness-programmer-506807855588', + color: 'bg-white/10 hover:bg-white/20', + icon: '/icons/fable.svg' + }, ] // Resource links - easy to update @@ -129,10 +135,13 @@ const readLinks: LinkItem[] = [ } ] -// Affiliate links section - ready for future expansion -// eslint-disable-next-line @typescript-eslint/no-unused-vars +// Affiliate/referral links section const affiliateLinks: LinkItem[] = [ - // This section is ready for future affiliate links + { + name: 'Join Fable - Book & TV Social App', + url: 'https://fable.co/invite/?referralID=YK5IPnrfEW', + color: 'bg-brand-purple-light/20 hover:bg-brand-purple-light/30' + }, ] // Legal links section @@ -425,6 +434,29 @@ export default function LinksPage() { )} + {/* Affiliate/Referral Links */} + {affiliateLinks.length > 0 && ( +
+

Referral Links

+
+ {affiliateLinks.map((link) => ( + + {link.name} + + ))} +
+

+ These are referral links. I may receive credit or a small benefit if you sign up through them. I only share services I personally use and enjoy. +

+
+ )} + {/* Link to Main Website */}
GitHub
  • YouTube
  • Bluesky
  • +
  • Fable
  • {/* Rest Mode Notice */} From 2fac3a622c11f5b97c177da724052f5e0e48dea0 Mon Sep 17 00:00:00 2001 From: devandapaige Date: Sun, 8 Mar 2026 15:39:50 -0400 Subject: [PATCH 2/2] Switch site theme to green; update content & assets MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flip site from purple “rest” palette to active green (effective Mar 8, 2026): update globals/tailwind colors, swap component classes across pages to use brand-green (accent/dark), set button text to black where needed, and adjust UI accents and rings. Content updates include feed.xml lastBuildDate and text refinements, expanded CTAs (service/pricing links, booking options, newsletter), and miscellaneous copy tweaks. Add new assets: optimized fable.svg and a new mastodon.svg, and add src/docs/AboutMeRewrite.md. Overall changes prepare the site for Active Mode and update styling, links, and promotional content. --- REST_PERIOD_NOTES.md | 12 +- public/feed.xml | 45 ++- public/icons/fable.svg | 13 +- public/icons/mastodon.svg | 4 + src/app/about/page.tsx | 67 +-- src/app/ai-mythbusting/page.tsx | 2 +- src/app/async/page.tsx | 6 +- src/app/back-to-basics/page.tsx | 30 +- src/app/digital-spring-cleaning/page.tsx | 2 +- src/app/globals.css | 9 +- src/app/links/page.tsx | 143 +++---- src/app/mindful-automation/page.tsx | 8 +- src/app/mutuals/page.tsx | 10 +- src/app/neuroinclusive-design/page.tsx | 2 +- src/app/page.tsx | 149 ++++++- src/app/passwords/page.tsx | 8 +- src/app/privacy-pleasure/page.tsx | 8 +- src/app/resources/page.tsx | 6 +- src/app/services/page.tsx | 381 +++++++++++++++--- src/app/sourdough/components/HeroSection.tsx | 2 +- .../sourdough/components/shared/Styles.tsx | 2 +- src/app/support/page.tsx | 39 +- src/app/tech-boundaries/page.tsx | 10 +- .../components/CallToAction.tsx | 2 +- src/components/AboutCard.tsx | 6 +- src/components/Footer.tsx | 41 +- src/components/ForeverTopicsCard.tsx | 14 +- src/components/Header.tsx | 79 ++-- src/components/HeroCard.tsx | 4 +- src/components/NewsletterCard.tsx | 6 +- src/components/PainPointsCard.tsx | 4 +- src/components/ServiceCard.tsx | 2 +- src/components/blog/BlogStyles.tsx | 6 +- src/components/resources/ResourcesList.tsx | 6 +- src/docs/AboutMeRewrite.md | 157 ++++++++ tailwind.config.ts | 20 +- 36 files changed, 956 insertions(+), 349 deletions(-) create mode 100644 public/icons/mastodon.svg create mode 100644 src/docs/AboutMeRewrite.md diff --git a/REST_PERIOD_NOTES.md b/REST_PERIOD_NOTES.md index f146ede..a7e6a2f 100644 --- a/REST_PERIOD_NOTES.md +++ b/REST_PERIOD_NOTES.md @@ -1,16 +1,16 @@ # Rest Period Implementation Notes -## Current Status: REST MODE (Nov 2025 - Mar 8, 2026) +## Current Status: ACTIVE MODE (from Mar 8, 2026) -The site is currently in **Rest Mode** with the purple color scheme inspired by the Pythia Oracles of Delphi tradition. +The site is in **Active Mode** with the green color scheme (#2e3d2a dark green, #32d24d lime accent). ## Color Scheme Changes -### Rest Period Colors (Current) -- **Main color:** `#442b48` (brand-purple-dark) - replaces `#2e3d2a` (brand-green-dark) -- **Accent color:** `#d8b9f7` (brand-purple-light) - replaces `#32d24d` (brand-green-accent) +### Rest Period Colors (Nov 2025 - Mar 2026) +- **Main color:** `#442b48` (brand-purple-dark) +- **Accent color:** `#d8b9f7` (brand-purple-light) -### Active Season Colors (March 8, 2026 onwards) +### Active Season Colors (Current - from March 8, 2026) - **Main color:** `#2e3d2a` (brand-green-dark) - **Accent color:** `#32d24d` (brand-green-accent) diff --git a/public/feed.xml b/public/feed.xml index 93f9472..9751203 100644 --- a/public/feed.xml +++ b/public/feed.xml @@ -5,7 +5,7 @@ https://pythonessprogrammer.com Thoughts on technology, accessibility, and the human experience. en - Fri, 23 Jan 2026 23:36:03 GMT + Sun, 08 Mar 2026 18:57:10 GMT @@ -39,7 +39,7 @@ When I deleted all my Meta accounts, it was part of a larger digital spring clea But TikTok? The dealbreaker for me was the sale to Larry Ellison's Oracle and Jared Kushner's investment group. When TikTok's U.S. operations went to the same people I'm already boycotting, that was it. I couldn't stay on a platform that was now owned by the same people I've been avoiding across tech, media, and entertainment. -This isn't just about leaving platforms. It's about recognizing that we have agency in our digital lives. We can choose where we spend our attention, where we build community, and what we're willing to support with our engagement. +Leaving platforms is one thing. But recognizing that we have agency in our digital lives? That's where the real power is. We can choose where we spend our attention, where we build community, and what we're willing to support with our engagement. Every platform we leave creates space for something else. Every boundary we set makes room for more intentional connection. Every "no" to a platform that doesn't align with our values is a "yes" to something that might. @@ -70,9 +70,10 @@ But I do have this privilege. And I will continue to use it. As more and more of For those of you who followed me on TikTok, I'm sorry if this feels abrupt. But I hope you'll understand that this is part of a larger, collective journey toward more intentional digital living. You can still find me on: -- **Bluesky** - where I'm building community in a more open, decentralized space -- **YouTube** - for longer-form content and tutorials -- **GitHub** - for code and technical work +- **Bluesky** - [@pythonessdev.bsky.social](https://bsky.app/profile/pythonessdev.bsky.social) - where I'm building community in a more open, decentralized space +- **YouTube** - [@pythonessprogrammer](https://www.youtube.com/@pythonessprogrammer) - for longer-form content and tutorials +- **Reddit** - [r/pythoness_reposts](https://www.reddit.com/r/pythoness_reposts/) - where I'm sharing important art, civil liberties, decolonization, and tech "reposts" from around the web +- **Newsletter** - [newsletter.pythonessprogrammer.com](https://newsletter.pythonessprogrammer.com/) - for deeper reflections, resources, and updates - **This blog** - for deeper reflections and resources ## The Wooden Snake Year: Shedding What No Longer Serves @@ -163,31 +164,43 @@ Hey there, cosmic coders and fellow rest-seekers. If you've visited my homepage or about page recently, you've seen that I'm currently in **Rest Mode**—a period of rest and reflection that follows the ancient tradition of the Pythia Oracles of Delphi. Services resume March 2026, and I want to share what this intentional pause has actually meant for me. -This isn't just about taking a break. This is about what happens when you allow yourself an official pause without personal obligation—when you give yourself permission to rest, reflect, and create without the pressure of client deadlines or business expectations. +What happens when you allow yourself an official pause without personal obligation? When you give yourself permission to rest, reflect, and create without the pressure of client deadlines or business expectations? + +And honestly? It's been more productive than I expected, just not in the ways I thought it would be. ## What Rest Mode Actually Means -Rest Mode for me means no client work, no consulting sessions, no pressure to be "on" for anyone else. It's a period from November through March where I honor cycles of rest and renewal—partly because of chronic illness and chronic pain management, and partly because I've learned that creativity needs space to breathe. +Rest Mode for me means no client work, no consulting sessions, no pressure to be "on" for anyone else. It's a period from November through March where I honor cycles of rest and renewal—partly because of chronic illness and chronic pain management, and partly because I've learned that creativity needs space to breathe. But here's what I didn't expect: **this pause has been incredibly productive in ways that have nothing to do with traditional productivity metrics.** -## The Organizational Pursuits: Scanning, Shredding, and Letting Go +I've watched myself naturally gravitate toward work that matters—not because I have to, but because I want to. And that shift? It's been everything. + +## The Organizational Pursuits: Scanning, Shredding, and Making Sense One of the most satisfying things I've done during this Rest Mode? Scanning and shredding tons of "important documents" and receipts. I'm talking about years of paper clutter that I'd been holding onto "just in case." Receipts from 2018. Documents I thought I might need someday. Papers that felt important but were actually just taking up physical and mental space. -There's something deeply satisfying about the process: scanning what actually matters, digitizing it properly, and then watching the shredder turn the rest into confetti. It's a physical manifestation of the Wooden Snake's shedding process—letting go of what no longer serves, making space for what does. +But here's the real story: scanning all my medical receipts and documents finally helped me make sense of my 10-year battle with chronic pain. Finally putting all the pieces together to tell my story in a way that shows the full arc: after needing to quit my job to be bedridden for 9 months in 2018, getting into the spa and wellness space to grow and heal, and now I'm passing technical interviews as a senior software engineer. + +Even though I can build a website from scratch, sometimes doing the manual labor of data collection can be just as meditative and insightful as the more mental work. There's something about the physical act of organizing, scanning, and digitizing that lets my brain process things differently. It's like the movement and the methodical nature of it creates space for insights I wouldn't have had if I'd just been thinking about it. + +There's something deeply satisfying about the process: scanning what actually matters, digitizing it properly, and then watching the shredder turn the rest into confetti. It's a physical manifestation of applying the Wooden Snake's patience principle—observing what I've been holding onto, then letting go of what no longer serves to make space for what does. + +I've been doing this in small batches, not rushing through it. That's been key. When I try to do it all at once, I get overwhelmed and stop. But when I do a little bit at a time, it feels manageable. Sustainable. Like something I can actually finish. ## Six Months of Daily Bullet Journaling: A Beautiful Space for Reflection The past six months of daily bullet journal usage has given me a beautiful space to reflect on the past year of wooden snake skin shed. -If you've been following along, you know I wrote about the [Wooden Snake year in my Lunar New Year post](/blog/lunar-new-year-2025)—about how 2025 was a year of patience, adaptability, and quiet transformation. Well, my bullet journal has become the physical record of that transformation. +If you've been following along, you know I wrote about the [Wooden Snake year in my Lunar New Year post](/blog/lunar-new-year-2025) - about how 2025 was a year of patience, adaptability, and quiet transformation. Well, my bullet journal has become the physical record of that transformation. Every day, I've been tracking not just tasks, but reflections. Patterns. What's working. What's not. What I'm letting go of. What I'm making space for. -The journal has become a witness to this year of shedding—of leaving platforms, setting boundaries, making political choices about where I show up digitally. It's all there, in ink and paper, a record of a year that's been about quiet transformation rather than loud announcements. +The journal has become a witness to this year of shedding—of leaving platforms (as I wrote about in my [TikTok boycott post](/blog/off-tiktok-for-good-tech-ethics-and-boundaries)), setting boundaries, making political choices about where I show up digitally. It's all there, in ink and paper, a record of a year that's been about quiet transformation rather than loud announcements. + +I honestly love using this journal to help me see patterns I might otherwise miss. It's been a gamechanger actually—having a physical space to reflect on what's working and what's not, without the pressure of making it look perfect or shareable. ## Revamping Old Projects, Starting New Ones @@ -197,7 +210,9 @@ I've been revamping old projects that I'd set aside when client work took priori I've also been starting new ones. Ideas that have been brewing in the back of my mind, waiting for the right moment. Concepts that needed space to develop without the pressure of immediate deliverables. -And I'm gearing up for launching several projects when my pause is over in March and I go back into more of a "business mode." But here's the key: these aren't projects I'm rushing to finish. They're projects that have had time to develop, to evolve, to become what they're meant to be. +My first project I revamped? The Surviving Capitalism Deck—a deck of cards I've been developing that applies 52 business and systems thinking principles to personal life, teaching everything from financial literacy to critical thinking through a gamified, collectible system. It's been sitting there, waiting. And now, without the pressure of client deadlines, I've been able to see it with fresh eyes—to understand what it actually needs to be, not what I thought it should be. + +I'll be launching it as a digital product this year. And I'm gearing up for launching several other projects when my pause is over in March and I go back into more of a "business mode." But here's the key: these aren't projects I'm rushing to finish. They're projects that have had time to develop, to evolve, to become what they're meant to be—applying the Wooden Snake's principle of finding smarter paths forward by giving ideas the space they need to fully form. ## The Wooden Snake's Final Shed @@ -207,6 +222,8 @@ Looking back at my [Lunar New Year post](/blog/lunar-new-year-2025), I wrote abo This Rest Mode has given me the space to reflect on all of that. To see the patterns. To understand what I've learned. To prepare for what comes next. +Applying the Wooden Snake's patience principle, I've been able to observe this entire year of transformation before judging what it means or rushing to the next thing. That observation time? It's been essential. + ## What This Means for March 2026 When services resume in March, I'll be coming back with: @@ -219,13 +236,15 @@ When services resume in March, I'll be coming back with: But more than that, I'll be coming back with a deeper understanding of what sustainable service looks like. Of how rest isn't a limitation—it's essential for the quality of work I want to provide. +I've learned that the best creative work happens when I'm not forcing it. When I give ideas space to breathe, they become what they're meant to be—not what I think they should be. + ## For Those Who Need Permission to Rest If you're reading this and thinking, "I wish I could take a pause like that," I want you to know: **you have permission to rest.** Maybe you can't take months off. But can you take a day? A weekend? Can you create boundaries around when you're available and when you're not? Can you give yourself space to reflect, to organize, to create without pressure? -The Wooden Snake teaches us that transformation happens in quiet moments. In the spaces between. In the pauses that feel unproductive but are actually essential. +The Wooden Snake teaches us that transformation happens in quiet moments. In the spaces between. In the pauses that feel unproductive but are actually essential. Applying its patience principle, we observe what we need before rushing to the next thing—and sometimes what we need is rest. ## Moving Forward diff --git a/public/icons/fable.svg b/public/icons/fable.svg index cafc7f5..83924e1 100644 --- a/public/icons/fable.svg +++ b/public/icons/fable.svg @@ -1,6 +1,9 @@ - - - - - + diff --git a/public/icons/mastodon.svg b/public/icons/mastodon.svg new file mode 100644 index 0000000..adec738 --- /dev/null +++ b/public/icons/mastodon.svg @@ -0,0 +1,4 @@ + diff --git a/src/app/about/page.tsx b/src/app/about/page.tsx index 141f2a0..0d78430 100644 --- a/src/app/about/page.tsx +++ b/src/app/about/page.tsx @@ -15,7 +15,7 @@ export default function AboutPage() { return (
    {/* Hero Section */} -
    +
    {/* Content */} @@ -41,19 +41,11 @@ export default function AboutPage() {

    -
    -

    - Current Status: Rest Mode -

    -

    - Services resume March 2026. Active season: March - November 2026. -

    -
    {/* Image */}
    -
    +
    Amanda Nelson - The Pythoness Programmer
    -
    +
    @@ -166,7 +158,7 @@ export default function AboutPage() { {/* Active & Rest Periods Section */} -
    +

    @@ -182,8 +174,8 @@ export default function AboutPage() {

    -
    -

    +
    +

    The Tradition of Rest

    @@ -195,8 +187,8 @@ export default function AboutPage() {

    -
    -

    +
    +

    Accommodating Chronic Illness & Chronic Pain

    @@ -204,8 +196,8 @@ export default function AboutPage() {

    -
    -

    +
    +

    Nurturing Creativity Through Slowness

    @@ -217,7 +209,7 @@ export default function AboutPage() {

    {/* My Philosophy Section */} -
    +

    @@ -235,7 +227,7 @@ export default function AboutPage() {
    {/* Principle 1 */}
    -
    +
    🧠

    Brain-Friendly Design

    @@ -290,7 +282,7 @@ export default function AboutPage() { {/* Principle 6 */}
    -
    +
    🤝

    Community-Centered Bargains

    @@ -302,8 +294,8 @@ export default function AboutPage() { {/* Centered Rest & Renewal Statement */}
    -
    -
    +
    +
    🌙

    @@ -319,27 +311,36 @@ export default function AboutPage() { {/* Call to Action Section */} -
    +

    - Services Resume March 2026 + Ready to Reflect?

    - We're currently in a period of rest and renewal. When we return, I'll be ready to guide you with pattern recognition, spiritual insight, and deep technical understanding—but the solutions will be yours. + If you're tired of repeating the same tech mistakes and ready to understand what your struggles are trying to teach you, let's work together. I offer Software Psychic sessions—reflection sessions with tarot-guided insight and pattern recognition—so you don't make the same mistake twice.

    -
    -

    - Subscribe to our newsletter to be the first to know when our schedule reopens. -

    +
    + View Services & Pricing + + - Subscribe to Newsletter + Book Async Reading — $30
    +

    + Or book a live session: 20-min or 60-min +

    +

    + Stay in the loop: Subscribe to our newsletter for insights and updates. +

    diff --git a/src/app/ai-mythbusting/page.tsx b/src/app/ai-mythbusting/page.tsx index 1634bd1..4490a37 100644 --- a/src/app/ai-mythbusting/page.tsx +++ b/src/app/ai-mythbusting/page.tsx @@ -96,7 +96,7 @@ export default function AIMythbustingPage() { href="https://newsletter.pythonessprogrammer.com/p/ai-bullshit-detection" target="_blank" rel="noopener noreferrer" - className="inline-block bg-brand-green-accent text-white px-6 py-3 rounded-md hover:bg-opacity-90 transition-colors text-sm font-semibold shadow-lg" + className="inline-block bg-brand-green-accent text-black px-6 py-3 rounded-md hover:bg-opacity-90 transition-colors text-sm font-semibold shadow-lg" > Read Full Newsletter → diff --git a/src/app/async/page.tsx b/src/app/async/page.tsx index 32989ec..8fa47c5 100644 --- a/src/app/async/page.tsx +++ b/src/app/async/page.tsx @@ -37,7 +37,7 @@ export default function AsyncServicePage() { Book Your Reading - $30 @@ -185,7 +185,7 @@ export default function AsyncServicePage() { Book Your Reading Now @@ -269,7 +269,7 @@ export default function AsyncServicePage() { Book Your Reading - $30 diff --git a/src/app/back-to-basics/page.tsx b/src/app/back-to-basics/page.tsx index 12805e6..2600925 100644 --- a/src/app/back-to-basics/page.tsx +++ b/src/app/back-to-basics/page.tsx @@ -35,7 +35,7 @@ export default function BackToBasicsPage(): ReactNode {

    Explore the Series @@ -139,7 +139,7 @@ export default function BackToBasicsPage(): ReactNode { {/* Week 1: Digital Organization */}
    - + Week 1

    From Digital Chaos to Creative Flow: Why Your Folders Matter

    @@ -170,7 +170,7 @@ export default function BackToBasicsPage(): ReactNode {
    -
    +

    Reference Materials

    Templates, resources, and inspiration organized by category, not by project

      @@ -214,7 +214,7 @@ export default function BackToBasicsPage(): ReactNode { href="https://newsletter.pythonessprogrammer.com/p/from-digital-chaos-to-creative-flow-why-your-folders-matter" target="_blank" rel="noopener noreferrer" - className="bg-brand-green-accent text-white px-6 py-3 rounded-lg hover:bg-opacity-90 transition-colors font-semibold text-center" + className="bg-brand-green-accent text-black px-6 py-3 rounded-lg hover:bg-opacity-90 transition-colors font-semibold text-center" > Read Full Newsletter @@ -228,7 +228,7 @@ export default function BackToBasicsPage(): ReactNode { {/* Week 2: Creative Workflow Revolution */}
      - + Week 2

      The Creative Workflow Revolution: How Organization Becomes Your Creative Superpower

      @@ -288,7 +288,7 @@ export default function BackToBasicsPage(): ReactNode { href="https://newsletter.pythonessprogrammer.com/p/the-creative-workflow-revolution-how-organization-becomes-your-creative-superpower" target="_blank" rel="noopener noreferrer" - className="bg-brand-green-accent text-white px-6 py-3 rounded-lg hover:bg-opacity-90 transition-colors font-semibold text-center" + className="bg-brand-green-accent text-black px-6 py-3 rounded-lg hover:bg-opacity-90 transition-colors font-semibold text-center" > Read Full Newsletter @@ -302,7 +302,7 @@ export default function BackToBasicsPage(): ReactNode { {/* Week 3: Data Flow */}
      - + Week 3

      Data Flow: From Chaos to Conscious

      @@ -367,7 +367,7 @@ export default function BackToBasicsPage(): ReactNode { href="https://newsletter.pythonessprogrammer.com/p/data-flow-from-chaos-to-conscious" target="_blank" rel="noopener noreferrer" - className="bg-brand-green-accent text-white px-6 py-3 rounded-lg hover:bg-opacity-90 transition-colors font-semibold text-center" + className="bg-brand-green-accent text-black px-6 py-3 rounded-lg hover:bg-opacity-90 transition-colors font-semibold text-center" > Read Full Newsletter @@ -381,7 +381,7 @@ export default function BackToBasicsPage(): ReactNode { {/* Week 4: Basic Automation */}
      - + Week 4

      Basic Automation That Serves Your Creativity: From Data Flow to AI Agents

      @@ -413,15 +413,15 @@ export default function BackToBasicsPage(): ReactNode {
      -
      +

      Medium Energy Days

      Focus on routine automation and maintenance. Keep systems running smoothly.

      - Use simple shortcuts - Run simple scripts - Maintain existing systems + Use simple shortcuts + Run simple scripts + Maintain existing systems
      @@ -459,7 +459,7 @@ export default function BackToBasicsPage(): ReactNode { href="https://newsletter.pythonessprogrammer.com/p/basic-automation-that-serves-your-creativity-from-data-flow-to-ai-agents" target="_blank" rel="noopener noreferrer" - className="bg-brand-green-accent text-white px-6 py-3 rounded-lg hover:bg-opacity-90 transition-colors font-semibold text-center" + className="bg-brand-green-accent text-black px-6 py-3 rounded-lg hover:bg-opacity-90 transition-colors font-semibold text-center" > Read Full Newsletter @@ -490,7 +490,7 @@ export default function BackToBasicsPage(): ReactNode {
    -
    +

    Reference Materials

    Templates, resources, and inspiration organized by category, not by project. diff --git a/src/app/digital-spring-cleaning/page.tsx b/src/app/digital-spring-cleaning/page.tsx index d031119..b96242b 100644 --- a/src/app/digital-spring-cleaning/page.tsx +++ b/src/app/digital-spring-cleaning/page.tsx @@ -52,7 +52,7 @@ export default function DigitalSpringCleaningPage() { Download PDF Worksheet diff --git a/src/app/globals.css b/src/app/globals.css index b1f0d75..6579f2a 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -13,11 +13,10 @@ --brand-fuchsia: #ff39bc; --brand-hyperlink-green: #156624; - /* Rest Period Color Palette (Nov 2025 - Mar 2026) */ - /* Main color: #442b48 (purple-dark) replaces #2e3d2a (green-dark) */ - /* Accent color: #d8b9f7 (purple-light) replaces #32d24d (green-accent) */ - --rest-main: #442b48; - --rest-accent: #d8b9f7; + /* Active Period Color Palette (Mar 2026 onwards) */ + /* Main: #2e3d2a (dark green), Accent: #32d24d (lime green) */ + --rest-main: #2e3d2a; + --rest-accent: #32d24d; } html { diff --git a/src/app/links/page.tsx b/src/app/links/page.tsx index 26d956e..2e8fe10 100644 --- a/src/app/links/page.tsx +++ b/src/app/links/page.tsx @@ -5,7 +5,7 @@ import CopyField from '@/components/CopyField' export const metadata: Metadata = { title: 'Connect with Amanda | Pythoness Programmer', - description: 'Connect with Amanda through various platforms. We are currently in rest mode. Services will resume March 2026.', + description: 'Connect with Amanda through various platforms. Book Software Psychic sessions, find resources, and stay in touch.', } // Define interface for link objects @@ -37,6 +37,12 @@ const socialLinks: LinkItem[] = [ color: 'bg-white/10 hover:bg-white/20', icon: '/icons/bluesky.svg' }, + { + name: 'Mastodon', + url: 'https://mastodon.social/@devandapaige', + color: 'bg-white/10 hover:bg-white/20', + icon: '/icons/mastodon.svg' + }, { name: 'Fable', url: 'https://fable.co/fabler/pythoness-programmer-506807855588', @@ -50,27 +56,27 @@ const resourceLinks: LinkItem[] = [ { name: 'Digital Accessibility Legal Guide', url: '/accessibility', - color: 'bg-brand-purple-light text-black hover:bg-brand-purple-light/90' + color: 'bg-brand-green-accent text-black hover:bg-brand-green-accent/90' }, { name: 'Mindful Automation', url: '/mindful-automation', - color: 'bg-brand-purple-light text-black hover:bg-brand-purple-light/90' + color: 'bg-brand-green-accent text-black hover:bg-brand-green-accent/90' }, { name: 'AI Myth-Busting', url: '/ai-mythbusting', - color: 'bg-brand-purple-light text-black hover:bg-brand-purple-light/90' + color: 'bg-brand-green-accent text-black hover:bg-brand-green-accent/90' }, { name: 'Sourdough Corner', url: '/sourdough', - color: 'bg-brand-purple-light text-black hover:bg-brand-purple-light/90' + color: 'bg-brand-green-accent text-black hover:bg-brand-green-accent/90' }, { name: 'Digital Spring Cleaning', url: '/digital-spring-cleaning', - color: 'bg-brand-purple-light text-black hover:bg-brand-purple-light/90' + color: 'bg-brand-green-accent text-black hover:bg-brand-green-accent/90' } ] @@ -82,9 +88,9 @@ const supportLinks: LinkItem[] = [ color: 'bg-white/10 hover:bg-white/20' }, { - name: 'Amazon Wishlist 🛍️', - url: 'https://www.amazon.com/hz/wishlist/ls/1ZXXDBUXYDDOC?ref_=wl_share', - color: 'bg-brand-purple-light text-brand-purple-dark hover:bg-opacity-90' + name: 'Throne Wishlist 🛍️', + url: 'https://throne.com/pythoness_programmer', + color: 'bg-brand-green-accent text-black hover:bg-opacity-90' } ] @@ -93,7 +99,7 @@ const shopLinks: LinkItem[] = [ { name: 'Sticky Spells Store - Etsy', url: 'https://stickyspells.etsy.com', - color: 'bg-brand-purple-light text-brand-purple-dark hover:bg-opacity-90' + color: 'bg-brand-green-accent text-black hover:bg-opacity-90' } ] @@ -102,22 +108,17 @@ const mediaLinks: LinkItem[] = [ { name: 'Newsletter', url: 'https://newsletter.pythonessprogrammer.com/subscribe', - color: 'bg-brand-purple-light/20 hover:bg-brand-purple-light/30' - }, - { - name: 'AI Generation Experiments Substack', - url: 'https://pythoness.substack.com', - color: 'bg-brand-purple-light/20 hover:bg-brand-purple-light/30' + color: 'bg-brand-green-accent/20 hover:bg-brand-green-accent/30' }, { name: 'Current Music Rotation', url: 'https://open.spotify.com/playlist/19jEmPqzZqp4zH8uyF7uCS?si=d413cc41fba54edc', - color: 'bg-brand-purple-light/20 hover:bg-brand-purple-light/30' + color: 'bg-brand-green-accent/20 hover:bg-brand-green-accent/30' }, { name: 'Working Lo-Fi Playlist', url: 'https://open.spotify.com/playlist/6aZF7YvZTVkfqU2JC0HWQo?si=01d86ac4bd8347ac', - color: 'bg-brand-purple-light/20 hover:bg-brand-purple-light/30' + color: 'bg-brand-green-accent/20 hover:bg-brand-green-accent/30' } ] @@ -126,12 +127,12 @@ const readLinks: LinkItem[] = [ { name: 'Blog', url: '/blog', - color: 'bg-brand-purple-light/20 hover:bg-brand-purple-light/30' + color: 'bg-brand-green-accent/20 hover:bg-brand-green-accent/30' }, { name: 'Newsletter', url: 'https://newsletter.pythonessprogrammer.com/', - color: 'bg-brand-purple-light/20 hover:bg-brand-purple-light/30' + color: 'bg-brand-green-accent/20 hover:bg-brand-green-accent/30' } ] @@ -140,7 +141,7 @@ const affiliateLinks: LinkItem[] = [ { name: 'Join Fable - Book & TV Social App', url: 'https://fable.co/invite/?referralID=YK5IPnrfEW', - color: 'bg-brand-purple-light/20 hover:bg-brand-purple-light/30' + color: 'bg-brand-green-accent/20 hover:bg-brand-green-accent/30' }, ] @@ -149,23 +150,23 @@ const legalLinks: LinkItem[] = [ { name: 'Privacy Policy', url: '/privacy-policy', - color: 'bg-brand-purple-dark/40 backdrop-blur-md border border-white/10 hover:bg-brand-purple-dark/60 text-white shadow-lg hover:shadow-xl transition-all duration-300' + color: 'bg-brand-green-dark/40 backdrop-blur-md border border-white/10 hover:bg-brand-green-dark/60 text-white shadow-lg hover:shadow-xl transition-all duration-300' }, { name: 'Terms of Service', url: '/terms', - color: 'bg-brand-purple-dark/40 backdrop-blur-md border border-white/10 hover:bg-brand-purple-dark/60 text-white shadow-lg hover:shadow-xl transition-all duration-300' + color: 'bg-brand-green-dark/40 backdrop-blur-md border border-white/10 hover:bg-brand-green-dark/60 text-white shadow-lg hover:shadow-xl transition-all duration-300' } ] export default function LinksPage() { return ( -

    +
    {/* Profile Section */}
    -
    +
    Pythoness Programmer Digital Psychic sessions that help you solve your own tech challenges through pattern recognition, spiritual insight, and deep technical understanding. As a Software Engineer, I offer async video readings and live 1:1 sessions.

    -
    -

    - Current Status: Rest Mode -

    -

    - Services resume March 2026. Active season: March - November 2026. -

    -
    {/* Support Banner Section */} @@ -201,7 +194,7 @@ export default function LinksPage() {

    Support the Pythoness @@ -216,7 +209,7 @@ export default function LinksPage() { href={link.url} target="_blank" rel="noopener noreferrer" - className={`block ${link.color} w-10 h-10 rounded-full flex items-center justify-center transition-transform hover:scale-110 focus:outline-none focus:ring-2 focus:ring-brand-purple-light focus:ring-offset-2 focus:ring-offset-brand-purple-dark`} + className={`block ${link.color} w-10 h-10 rounded-full flex items-center justify-center transition-transform hover:scale-110 focus:outline-none focus:ring-2 focus:ring-brand-green-accent focus:ring-offset-2 focus:ring-offset-brand-green-dark`} aria-label={link.name} > {link.icon && ( @@ -237,54 +230,48 @@ export default function LinksPage() { {/* Links Container */}
    - {/* Featured Service - Rest Mode */} + {/* Featured Service - Async */}

    Featured Service

    - Get a personalized Digital Psychic reading delivered asynchronously. Perfect for when you need insights + Get a personalized Software Psychic reading delivered asynchronously. Perfect for when you need insights on your project or web presence but prefer to watch on your own time.

    20-minute video reading - no live meeting required

    -
    -

    - Available starting March 2026 -

    -

    - Subscribe to our newsletter to be the first to know when services resume. -

    - - Subscribe to Newsletter - -
    + + Book Async Reading — $30 +
    - {/* Booking Links - Rest Mode Notice */} + {/* Booking Links - Live 1:1 */}
    -

    Live 1:1 Digital Psychic Sessions

    +

    Live 1:1 Software Psychic Sessions

    - Connect live for real-time guidance on your tech challenges. These interactive sessions combine - pattern recognition, spiritual insight, and deep technical understanding to help you solve problems + Connect live for real-time guidance on your tech challenges. These interactive sessions combine + pattern recognition, spiritual insight, and deep technical understanding to help you solve problems and move forward with confidence.

    -
    -

    - Services resume March 2026 -

    -

    - Subscribe to our newsletter to be the first to know when our schedule reopens. -

    +
    + + Book 20-Min Session — $30 + - Subscribe to Newsletter + Book 60-Min Session — $60
    @@ -300,7 +287,7 @@ export default function LinksPage() { href={link.url} target="_blank" rel="noopener noreferrer" - className={`block ${link.color} py-2.5 md:py-3 px-6 rounded-lg text-center transition-transform hover:scale-105 focus:outline-none focus:ring-2 focus:ring-brand-purple-light focus:ring-offset-2 focus:ring-offset-brand-purple-dark font-medium`} + className={`block ${link.color} py-2.5 md:py-3 px-6 rounded-lg text-center transition-transform hover:scale-105 focus:outline-none focus:ring-2 focus:ring-brand-green-accent focus:ring-offset-2 focus:ring-offset-brand-green-dark font-medium`} > {link.name} @@ -319,7 +306,7 @@ export default function LinksPage() { href={link.url} target="_blank" rel="noopener noreferrer" - className={`block ${link.color} py-2.5 md:py-3 px-6 rounded-lg text-center transition-transform hover:scale-105 focus:outline-none focus:ring-2 focus:ring-brand-purple-light focus:ring-offset-2 focus:ring-offset-brand-purple-dark`} + className={`block ${link.color} py-2.5 md:py-3 px-6 rounded-lg text-center transition-transform hover:scale-105 focus:outline-none focus:ring-2 focus:ring-brand-green-accent focus:ring-offset-2 focus:ring-offset-brand-green-dark`} > {link.name} @@ -337,7 +324,7 @@ export default function LinksPage() { href={link.url} target="_blank" rel="noopener noreferrer" - className={`block ${link.color} py-2.5 md:py-3 px-6 rounded-lg text-center transition-transform hover:scale-105 focus:outline-none focus:ring-2 focus:ring-brand-purple-light focus:ring-offset-2 focus:ring-offset-brand-purple-dark`} + className={`block ${link.color} py-2.5 md:py-3 px-6 rounded-lg text-center transition-transform hover:scale-105 focus:outline-none focus:ring-2 focus:ring-brand-green-accent focus:ring-offset-2 focus:ring-offset-brand-green-dark`} > {link.name} @@ -372,7 +359,7 @@ export default function LinksPage() { href={link.url} target="_blank" rel="noopener noreferrer" - className={`block ${link.color} py-2.5 md:py-3 px-6 rounded-lg text-center transition-transform hover:scale-105 focus:outline-none focus:ring-2 focus:ring-brand-purple-light focus:ring-offset-2 focus:ring-offset-brand-purple-dark`} + className={`block ${link.color} py-2.5 md:py-3 px-6 rounded-lg text-center transition-transform hover:scale-105 focus:outline-none focus:ring-2 focus:ring-brand-green-accent focus:ring-offset-2 focus:ring-offset-brand-green-dark`} > {link.boldPart ? ( <> @@ -403,19 +390,19 @@ export default function LinksPage() { label="Cash App" value="$ANCreative" ariaLabel="Cash App username" - copyButtonClassName="shrink-0 rounded-md px-3 py-2 bg-brand-purple-light text-brand-purple-dark hover:bg-opacity-90 transition-colors focus:outline-none focus:ring-2 focus:ring-brand-purple-light" + copyButtonClassName="shrink-0 rounded-md px-3 py-2 bg-brand-green-accent text-brand-green-dark hover:bg-opacity-90 transition-colors focus:outline-none focus:ring-2 focus:ring-brand-green-accent" />
    @@ -425,7 +412,7 @@ export default function LinksPage() { href={link.url} target="_blank" rel="noopener noreferrer" - className={`block ${link.color} py-2.5 md:py-3 px-6 rounded-lg text-center transition-transform hover:scale-105 focus:outline-none focus:ring-2 focus:ring-brand-purple-light focus:ring-offset-2 focus:ring-offset-brand-purple-dark font-medium`} + className={`block ${link.color} py-2.5 md:py-3 px-6 rounded-lg text-center transition-transform hover:scale-105 focus:outline-none focus:ring-2 focus:ring-brand-green-accent focus:ring-offset-2 focus:ring-offset-brand-green-dark font-medium`} > {link.name} @@ -445,7 +432,7 @@ export default function LinksPage() { href={link.url} target="_blank" rel="noopener noreferrer" - className={`block ${link.color} py-2.5 md:py-3 px-6 rounded-lg text-center transition-transform hover:scale-105 focus:outline-none focus:ring-2 focus:ring-brand-purple-light focus:ring-offset-2 focus:ring-offset-brand-purple-dark`} + className={`block ${link.color} py-2.5 md:py-3 px-6 rounded-lg text-center transition-transform hover:scale-105 focus:outline-none focus:ring-2 focus:ring-brand-green-accent focus:ring-offset-2 focus:ring-offset-brand-green-dark`} > {link.name} @@ -461,7 +448,7 @@ export default function LinksPage() {
    Visit my website → @@ -470,7 +457,7 @@ export default function LinksPage() { {link.name} diff --git a/src/app/mindful-automation/page.tsx b/src/app/mindful-automation/page.tsx index 5a7b388..749bc27 100644 --- a/src/app/mindful-automation/page.tsx +++ b/src/app/mindful-automation/page.tsx @@ -82,7 +82,7 @@ export default function May2025LandingPage(): ReactNode {

    Start the Y.O.U. Framework @@ -212,7 +212,7 @@ export default function May2025LandingPage(): ReactNode {

    @@ -281,7 +281,7 @@ export default function May2025LandingPage(): ReactNode { @@ -307,7 +307,7 @@ export default function May2025LandingPage(): ReactNode { diff --git a/src/app/mutuals/page.tsx b/src/app/mutuals/page.tsx index be7d120..c6ebf44 100644 --- a/src/app/mutuals/page.tsx +++ b/src/app/mutuals/page.tsx @@ -54,7 +54,7 @@ export default function MutualsPage() { href="https://cal.com/pythoness/20min" target="_blank" rel="noopener noreferrer" - className="inline-flex items-center px-6 py-3 border border-transparent text-base font-medium rounded-md text-white bg-brand-green-accent hover:bg-opacity-90 transition-all duration-300 transform hover:scale-105 hover:shadow-lg shadow-brand-green-accent/20" + className="inline-flex items-center px-6 py-3 border border-transparent text-base font-medium rounded-md text-black bg-brand-green-accent hover:bg-opacity-90 transition-all duration-300 transform hover:scale-105 hover:shadow-lg shadow-brand-green-accent/20" > Book a Digital Psychic Session @@ -78,7 +78,7 @@ export default function MutualsPage() { /> @@ -97,7 +97,7 @@ export default function MutualsPage() { href="https://newsletter.pythonessprogrammer.com" target="_blank" rel="noopener noreferrer" - className="inline-flex items-center px-6 py-3 border border-transparent text-base font-medium rounded-md text-white bg-brand-green-accent hover:bg-opacity-90 transition-all duration-300 transform hover:scale-105 hover:shadow-lg shadow-brand-green-accent/20" + className="inline-flex items-center px-6 py-3 border border-transparent text-base font-medium rounded-md text-black bg-brand-green-accent hover:bg-opacity-90 transition-all duration-300 transform hover:scale-105 hover:shadow-lg shadow-brand-green-accent/20" > Join Newsletter @@ -126,7 +126,7 @@ export default function MutualsPage() { href="/media-kit/podcast-one-sheet.pdf" target="_blank" rel="noopener noreferrer" - className="inline-flex items-center px-4 py-2 bg-brand-green-accent text-white rounded-md hover:bg-opacity-90 transition-all duration-300 transform hover:scale-105 hover:shadow-lg shadow-brand-green-accent/20" + className="inline-flex items-center px-4 py-2 bg-brand-green-accent text-black rounded-md hover:bg-opacity-90 transition-all duration-300 transform hover:scale-105 hover:shadow-lg shadow-brand-green-accent/20" > Download One Sheet @@ -145,7 +145,7 @@ export default function MutualsPage() { href="/media-kit/branding-guidelines.pdf" target="_blank" rel="noopener noreferrer" - className="inline-flex items-center px-4 py-2 bg-brand-green-accent text-white rounded-md hover:bg-opacity-90 transition-all duration-300 transform hover:scale-105 hover:shadow-lg shadow-brand-green-accent/20" + className="inline-flex items-center px-4 py-2 bg-brand-green-accent text-black rounded-md hover:bg-opacity-90 transition-all duration-300 transform hover:scale-105 hover:shadow-lg shadow-brand-green-accent/20" > View Guidelines diff --git a/src/app/neuroinclusive-design/page.tsx b/src/app/neuroinclusive-design/page.tsx index 04fc326..35f3c7f 100644 --- a/src/app/neuroinclusive-design/page.tsx +++ b/src/app/neuroinclusive-design/page.tsx @@ -87,7 +87,7 @@ export default function NeuroinclusiveDesignPage(): ReactNode {

    Explore Design Principles diff --git a/src/app/page.tsx b/src/app/page.tsx index 0777a8b..7121e56 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,13 +1,154 @@ -import RestPeriodHome from '../components/RestPeriodHome' +import HeroCard from '../components/HeroCard' +import PainPointsCard from '../components/PainPointsCard' +import ForeverTopicsCard from '../components/ForeverTopicsCard' +import ServiceCard from '../components/ServiceCard' +import AboutCard from '../components/AboutCard' +import NewsletterCard from '../components/NewsletterCard' export const metadata = { - title: 'Pythoness Programmer | Rest Mode', - description: 'We are currently in a period of rest and reflection. Consulting services will resume March 2026.', + title: 'Pythoness Programmer | Tech Coaching & Digital Psychic Sessions', + description: 'Tech coaching and Digital Psychic sessions for conscious creators and business owners. Reflection, pattern recognition, and brain-friendly systems.', other: { 'p:domain_verify': '18888270799e128d4d49644962be5ab6' } } export default async function Home() { - return + return ( +
    + {/* Hero Section */} +
    +
    + +
    +
    + + {/* Pain Points Section */} +
    +
    + +
    +
    + + {/* Forever Topics Section */} +
    +
    + +
    +
    + + {/* Services Section */} +
    +
    + {/* Section Header */} +
    +

    + Your Digital Journey, Your Way +

    +
    +
    +

    + Everyone learns and grows differently. I'm here to help you discover your own path to digital confidence, with a healthy dose of humor and zero judgment along the way. +

    +
    +
    +
    + + {/* Featured Async Service */} +
    +

    Featured Service

    +
    + +
    +
    + + {/* Live 1:1 Sessions */} +
    +

    Live 1:1 Sessions

    +

    Interactive sessions with real-time guidance

    +
    + + +
    +
    +
    +
    + + {/* About Section */} +
    +
    + +
    +
    + + {/* Newsletter Section */} +
    +
    + +
    +
    +
    + ) } diff --git a/src/app/passwords/page.tsx b/src/app/passwords/page.tsx index 609b0c7..494c80e 100644 --- a/src/app/passwords/page.tsx +++ b/src/app/passwords/page.tsx @@ -204,7 +204,7 @@ export default function PasswordsPage() { href="https://bitwarden.com" target="_blank" rel="noopener noreferrer" - className="inline-block bg-brand-green-accent text-white px-6 py-2 rounded-lg hover:bg-opacity-90 transition-colors font-semibold text-sm" + className="inline-block bg-brand-green-accent text-black px-6 py-2 rounded-lg hover:bg-opacity-90 transition-colors font-semibold text-sm" > Get Started: bitwarden.com @@ -239,7 +239,7 @@ export default function PasswordsPage() { href="https://1password.com" target="_blank" rel="noopener noreferrer" - className="inline-block bg-brand-green-accent text-white px-6 py-2 rounded-lg hover:bg-opacity-90 transition-colors font-semibold text-sm" + className="inline-block bg-brand-green-accent text-black px-6 py-2 rounded-lg hover:bg-opacity-90 transition-colors font-semibold text-sm" > Get Started: 1password.com @@ -273,7 +273,7 @@ export default function PasswordsPage() { href="https://dashlane.com" target="_blank" rel="noopener noreferrer" - className="inline-block bg-brand-green-accent text-white px-6 py-2 rounded-lg hover:bg-opacity-90 transition-colors font-semibold text-sm" + className="inline-block bg-brand-green-accent text-black px-6 py-2 rounded-lg hover:bg-opacity-90 transition-colors font-semibold text-sm" > Get Started: dashlane.com @@ -630,7 +630,7 @@ export default function PasswordsPage() {
    Book a Session diff --git a/src/app/privacy-pleasure/page.tsx b/src/app/privacy-pleasure/page.tsx index 16c0785..5a14e3a 100644 --- a/src/app/privacy-pleasure/page.tsx +++ b/src/app/privacy-pleasure/page.tsx @@ -155,7 +155,7 @@ export default function PrivacyPleasurePage(): ReactNode { href="https://newsletter.pythonessprogrammer.com/p/privacy-pleasure-your-personal-act-of-digital-resistance" target="_blank" rel="noopener noreferrer" - className="block bg-brand-green-accent text-white text-center px-6 py-3 rounded-lg hover:bg-opacity-90 transition-colors font-semibold" + className="block bg-brand-green-accent text-black text-center px-6 py-3 rounded-lg hover:bg-opacity-90 transition-colors font-semibold" > Read Full Week 1 Newsletter → @@ -260,7 +260,7 @@ export default function PrivacyPleasurePage(): ReactNode { href="https://newsletter.pythonessprogrammer.com/p/privacy-pleasure-week-2-isp-vpn-protection" target="_blank" rel="noopener noreferrer" - className="block bg-brand-green-accent text-white text-center px-6 py-3 rounded-lg hover:bg-opacity-90 transition-colors font-semibold" + className="block bg-brand-green-accent text-black text-center px-6 py-3 rounded-lg hover:bg-opacity-90 transition-colors font-semibold" > Read Full Week 2 Newsletter → @@ -345,7 +345,7 @@ export default function PrivacyPleasurePage(): ReactNode { href="https://newsletter.pythonessprogrammer.com/p/privacy-pleasure-week-3-secure-communication-and-file-sharing" target="_blank" rel="noopener noreferrer" - className="block bg-brand-green-accent text-white text-center px-6 py-3 rounded-lg hover:bg-opacity-90 transition-colors font-semibold" + className="block bg-brand-green-accent text-black text-center px-6 py-3 rounded-lg hover:bg-opacity-90 transition-colors font-semibold" > Read Full Week 3 Newsletter → @@ -442,7 +442,7 @@ export default function PrivacyPleasurePage(): ReactNode { href="https://newsletter.pythonessprogrammer.com/p/privacy-pleasure-week-4-your-complete-system" target="_blank" rel="noopener noreferrer" - className="block bg-brand-green-accent text-white text-center px-6 py-3 rounded-lg hover:bg-opacity-90 transition-colors font-semibold" + className="block bg-brand-green-accent text-black text-center px-6 py-3 rounded-lg hover:bg-opacity-90 transition-colors font-semibold" > Read Full Week 4 Newsletter → diff --git a/src/app/resources/page.tsx b/src/app/resources/page.tsx index cf5834d..506050c 100644 --- a/src/app/resources/page.tsx +++ b/src/app/resources/page.tsx @@ -82,7 +82,7 @@ export default function ResourcesPage() { href="https://newsletter.pythonessprogrammer.com" target="_blank" rel="noopener noreferrer" - className="inline-block bg-brand-green-accent text-white px-6 py-2 rounded-lg hover:bg-opacity-90 transition-colors" + className="inline-block bg-brand-green-accent text-black px-6 py-2 rounded-lg hover:bg-opacity-90 transition-colors" > Subscribe Now @@ -135,7 +135,7 @@ export default function ResourcesPage() { href="https://newsletter.pythonessprogrammer.com" target="_blank" rel="noopener noreferrer" - className="inline-block bg-brand-green-accent text-white px-8 py-3 rounded-lg hover:bg-opacity-90 transition-colors font-semibold" + className="inline-block bg-brand-green-accent text-black px-8 py-3 rounded-lg hover:bg-opacity-90 transition-colors font-semibold" > Get Notified When Available @@ -155,7 +155,7 @@ export default function ResourcesPage() {
    Book a Session diff --git a/src/app/services/page.tsx b/src/app/services/page.tsx index dc1a784..002354b 100644 --- a/src/app/services/page.tsx +++ b/src/app/services/page.tsx @@ -1,79 +1,362 @@ -import NewsletterCard from '../../components/NewsletterCard' +/* eslint-disable react/no-unescaped-entities */ +import Link from 'next/link' +import ServiceCard from '../../components/ServiceCard' +import PainPointsCard from '../../components/PainPointsCard' export const metadata = { title: 'Services | Pythoness Programmer', - description: 'We are currently in a period of rest. Services will resume March 2026.', + description: 'Reflect on your tech struggles with the Software Psychic. Neurodivergent-friendly sessions with tarot-guided insight and pattern recognition.', } export default function ServicesPage() { return ( -
    - {/* Hero Section - Rest Mode */} -
    -
    -
    -

    - Services +
    + {/* Hero Section */} +
    +
    +
    +

    + Reflect on Your Tech Struggles with the Software Psychic

    -
    -

    - We are currently in a period of rest and reflection, following the ancient tradition of the Pythia Oracles of Delphi. +

    + I help neurodivergent creatives and small business owners understand the patterns they keep repeating so they don't make the same mistake twice. These aren't troubleshooting sessions—they're reflection sessions where we examine your last tech hurdle and figure out what it's revealing about what you've internalized and what your brain actually needs.

    -
    -

    - Consulting services will resume +

    + + Book Your Async Reading + + + View All Services + +
    +
    +
    +
    + + {/* Pain Points Section */} +
    +
    + +
    +
    + + {/* Main Services Section */} +
    +
    +
    +

    + My Services +

    +
    +
    +

    + Through tarot-guided insight and deep technical expertise, I help you see what you can't see alone: the ways your tools work against you, the resources you didn't know existed, and the new pathways forward. +

    +
    +
    +
    + + {/* Async Service - Featured in its own row */} +
    +
    + +
    +
    + + {/* Live 1:1 Services */} +
    +

    Live 1:1 Sessions

    +

    Interactive sessions with real-time guidance

    +
    + +
    + + + +
    +
    +
    + + {/* Why "Software Psychic" Section */} +
    +
    +
    +

    + Why "Software Psychic"? +

    +
    +
    +

    + My approach isn't about predicting the future—it's about seeing patterns others miss and connecting dots across industries that have historically gatekept knowledge. +

    +
    +
    +
    + +
    +
    +
    + 🔍 +
    +

    Pattern Recognition

    +

    + My background in sociology, civics, and politics gives me a unique lens for seeing how systems truly work—and where they're designed to fail.

    -

    - March 2026 +

    + +
    +
    + 🔗 +
    +

    Industry Connections

    +

    + I make unsettling connections across law, marketing, and tech—industries that have historically gatekept knowledge from the people who need it most.

    -

    - Active season: March - November 2026 +

    + +
    +
    + +
    +

    Spiritual Creation

    +

    + Creation and ideation are spiritual processes. I combine the mystical with the practical to get at the heart of what your business truly needs.

    - {/* Services Info Section */} -
    -
    -
    -

    - About Our Services + {/* Process Section */} +
    +
    +
    +

    + How We'll Work Together

    -
    -

    - During our active season, we offer Digital Psychic sessions designed for small business owners who want to find their tech stack simple, easy, and functional. Our approach combines technical expertise, pattern recognition, and spiritual insight to help you bring your vision to life. -

    - -
    -

    - Async Digital Psychic Reading -

    -

    - Our asynchronous service will be available starting March 2026. This 20-minute video recording provides a personalized intuitive reading for your project, website, or online presence—delivered as a private video you can watch and re-watch at your pace. -

    -

    - Perfect for busy schedules, this service includes tarot card pulls, deep project analysis, and pattern recognition insights—all without requiring a live meeting. -

    +
    +
    +

    + A clear, structured process designed to reduce overwhelm and maximize results. The process starts as soon as you book your session, including your deck preference for our tarot or oracle card pulls. +

    +
    +
    +
    + +
    +
    +
    + 1 +
    +

    Book & Share

    +

    + Secure your session and fill out a quick intake form to share your goals, challenges, and priorities. +

    +
    + +
    +
    + 2 +
    +

    Assessment

    +

    + I review your information and analyze your current systems to identify opportunities for improvement. +

    +
    + +
    +
    + 3
    +

    Session & Solutions

    +

    + We meet for your session, diving into your challenges, brainstorming solutions, and creating a clear action plan together. +

    +
    -

    - If you're interested in our services, we encourage you to subscribe to our newsletter to be the first to know when our schedule reopens in March 2026. +

    +
    + 4 +
    +

    Follow-Up & Support

    +

    + Receive a summary, resources, and next steps after your session. There are options for ongoing support if you need it.

    - {/* Newsletter Section */} -
    + {/* FAQ Section */} +
    - +
    +

    + Frequently Asked Questions +

    +
    +
    +

    + Common questions about my services and approach. +

    +
    +
    +
    + +
    +
    +

    + What makes your approach different? +

    +

    + I design solutions specifically for neurodivergent brains, focusing on reducing cognitive load, providing clear structure, and creating systems that actually work for your unique thinking patterns. No judgment, no assumptions, just practical solutions. +

    +
    + +
    +

    + Do you work with people who aren't tech-savvy? +

    +

    + Absolutely! In fact, many of my clients come to me feeling overwhelmed by technology. I specialize in breaking down complex concepts into manageable pieces and providing judgment-free support regardless of your current tech comfort level. +

    +
    + +
    +

    + How do I know which service is right for me? +

    +

    + Start with a 20-minute session! We'll discuss your specific needs and I'll recommend the best approach. The 20-minute session is perfect for exploring options, while the 60-minute session is ideal for comprehensive change. +

    +
    + +
    +

    + What if I need ongoing support? +

    +

    + I offer ongoing tech support plans and can also work with you on a project basis. Many clients start with a consultation or overhaul and then choose ongoing support to maintain their systems and continue growing. +

    +
    + +
    +

    + Do you work with businesses or just individuals? +

    +

    + Both! I work with individual professionals, small business owners, and teams. My approach scales well for different needs, whether you're a solopreneur or managing a small team's digital systems. +

    +
    +
    +
    +
    + + {/* Call to Action Section */} +
    +
    +

    + Ready to Understand Your Tech Struggles? +

    +

    + Choose the session that fits your needs, and let's reflect together. No pressure, no judgment—just a conversation about how I can help. +

    +
    + + Book Your Async Reading + + + Learn More About Me + +

    diff --git a/src/app/sourdough/components/HeroSection.tsx b/src/app/sourdough/components/HeroSection.tsx index b02e57c..cf8bf14 100644 --- a/src/app/sourdough/components/HeroSection.tsx +++ b/src/app/sourdough/components/HeroSection.tsx @@ -20,7 +20,7 @@ export default function HeroSection() { href="https://www.youtube.com/watch?v=sTAiDki7AQA" target="_blank" rel="noopener noreferrer" - className="inline-block bg-brand-green-accent text-white px-6 py-3 rounded-lg hover:bg-brand-green-accent/90 transition-colors" + className="inline-block bg-brand-green-accent text-black px-6 py-3 rounded-lg hover:bg-brand-green-accent/90 transition-colors" > Watch Joshua Weissman's Guide diff --git a/src/app/sourdough/components/shared/Styles.tsx b/src/app/sourdough/components/shared/Styles.tsx index eea7a12..d7338c1 100644 --- a/src/app/sourdough/components/shared/Styles.tsx +++ b/src/app/sourdough/components/shared/Styles.tsx @@ -13,5 +13,5 @@ export const sectionStyles = { ordered: "list-decimal pl-6 space-y-2", }, link: "text-brand-green-accent hover:text-brand-green-dark transition-colors", - button: "inline-flex items-center px-6 py-3 bg-brand-green-dark hover:bg-brand-green-accent text-white rounded-lg transition-colors duration-200", + button: "inline-flex items-center px-6 py-3 bg-brand-green-dark hover:bg-brand-green-accent text-black rounded-lg transition-colors duration-200", } \ No newline at end of file diff --git a/src/app/support/page.tsx b/src/app/support/page.tsx index 7616394..2a71bd9 100644 --- a/src/app/support/page.tsx +++ b/src/app/support/page.tsx @@ -25,9 +25,9 @@ const supportLinks: LinkItem[] = [ color: 'bg-white/10 hover:bg-white/20' }, { - name: 'Amazon Wishlist 🛍️', - url: 'https://www.amazon.com/hz/wishlist/ls/1ZXXDBUXYDDOC?ref_=wl_share', - color: 'bg-brand-purple-light text-black hover:bg-brand-purple-light/90' + name: 'Throne Wishlist 🛍️', + url: 'https://throne.com/pythoness_programmer', + color: 'bg-brand-green-accent text-black hover:bg-opacity-90' } ] @@ -52,33 +52,35 @@ export default function SupportPage() {

    Pythoness Programmer

    - Every resource I create is free. Every tutorial, every tool, every insight—available to anyone who needs it. - Your support makes that possible. + All my digital resources are free—and I keep it that way. Your support helps me sustain that without putting guides or tools behind a paywall.

    {/* Value Proposition Section */}
    -

    Keep the Free Resources Flowing

    +

    Free Resources, No Catch

    - I believe technology education should be accessible to everyone—no paywalls, no gatekeeping, no barriers. - That's why everything I create is free: coding tutorials, accessibility guides, neurodivergent-friendly tools, - and resources that help people navigate the digital world with confidence. + Every digital resource I make is free: the accessibility legal guide, + mindful automation and digital spring cleaning guides, + back-to-basics and password security resources, the blog, + newsletter, and anything else I publish here. No paywalls, no "free tier" that gets worse later—they stay free.

    - Creating high-quality, free content takes time, research, and resources. Your support directly enables me to: + I monetize through optional support (tips, wishlist) and paid sessions (Software Psychic, async readings). + That way I can keep a living without breaking the promise that the resources themselves stay free for everyone. +

    +

    + When you send a tip or use the wishlist, you're helping me:

      -
    • Continue producing free tutorials and guides
    • -
    • Develop new tools and resources for the community
    • -
    • Research and share accessibility best practices
    • -
    • Maintain and improve existing free resources
    • -
    • Keep creating content that makes tech less intimidating
    • +
    • Keep all existing guides and tools free and available
    • +
    • Add new free resources without turning them into paid products
    • +
    • Maintain and improve what's already there
    • +
    • Stay sustainable so I don't have to gate the free stuff later

    - When you support this work, you're not just supporting me—you're ensuring these resources stay free - and accessible for everyone who needs them. + Supporting this work means the free resources stay free—and I can keep making more without changing that.

    @@ -89,8 +91,7 @@ export default function SupportPage() {

    Choose Your Support Method

    - Whether it's the price of a coffee or a monthly contribution, your support directly fuels more free content - for the community. Every amount makes a difference. + Tips and wishlist gifts help me keep all my digital resources free. Every bit makes a difference.

    {/* Direct support usernames */}
    diff --git a/src/app/tech-boundaries/page.tsx b/src/app/tech-boundaries/page.tsx index 55eeb60..ebae38e 100644 --- a/src/app/tech-boundaries/page.tsx +++ b/src/app/tech-boundaries/page.tsx @@ -80,7 +80,7 @@ export default function TechBoundariesPage(): ReactNode {

    Explore Boundary Principles @@ -243,15 +243,15 @@ export default function TechBoundariesPage(): ReactNode {
    {/* Medium Energy */} -
    +

    Medium Energy Days

    Focus on routine automation and maintenance. Keep systems running smoothly.

    - Use Stream Deck shortcuts - Run simple scripts - Maintain existing systems + Use Stream Deck shortcuts + Run simple scripts + Maintain existing systems
    diff --git a/src/app/vibe-coding-cheatsheet/components/CallToAction.tsx b/src/app/vibe-coding-cheatsheet/components/CallToAction.tsx index 0e657f5..0b0f402 100644 --- a/src/app/vibe-coding-cheatsheet/components/CallToAction.tsx +++ b/src/app/vibe-coding-cheatsheet/components/CallToAction.tsx @@ -26,7 +26,7 @@ export default function CallToAction() {
    Explore Services diff --git a/src/components/AboutCard.tsx b/src/components/AboutCard.tsx index f34bdaf..5a3a4a9 100644 --- a/src/components/AboutCard.tsx +++ b/src/components/AboutCard.tsx @@ -57,7 +57,7 @@ export default function AboutCard({
    {/* Decorative elements */}
    -
    +
    {/* Main photo */}
    {photo?.main ? ( @@ -69,7 +69,7 @@ export default function AboutCard({ style={{ width: '100%', height: 'auto', backgroundColor: 'transparent' }} /> ) : ( -
    +

    Image coming soon

    )} @@ -104,7 +104,7 @@ export default function AboutCard({ )} {/* Pythia caption */} -
    +

    {pythia}

    diff --git a/src/components/Footer.tsx b/src/components/Footer.tsx index cb16c4f..09938ae 100644 --- a/src/components/Footer.tsx +++ b/src/components/Footer.tsx @@ -12,13 +12,13 @@ function FooterSection({ title, children }: { title: string | ReactNode, childre export default function Footer() { // 1. Add a single class for all footer links - const footerLinkClass = "text-white/80 hover:text-brand-purple-light transition-colors flex items-center space-x-2 focus:outline-none focus:ring-2 focus:ring-brand-purple-light focus:ring-offset-2 rounded px-1 py-0.5 text-sm"; + const footerLinkClass = "text-white/80 hover:text-brand-green-accent transition-colors flex items-center space-x-2 focus:outline-none focus:ring-2 focus:ring-brand-green-accent focus:ring-offset-2 rounded px-1 py-0.5 text-sm"; // Inline version for crafted using sentence - const footerInlineLinkClass = "text-white/80 hover:text-brand-purple-light transition-colors focus:outline-none focus:ring-2 focus:ring-brand-purple-light focus:ring-offset-2 rounded px-1 py-0.5 text-sm"; + const footerInlineLinkClass = "text-white/80 hover:text-brand-green-accent transition-colors focus:outline-none focus:ring-2 focus:ring-brand-green-accent focus:ring-offset-2 rounded px-1 py-0.5 text-sm"; return (
    @@ -26,7 +26,7 @@ export default function Footer() {
    {/* Brand Column */} + Pythoness Programmer }> @@ -37,30 +37,29 @@ export default function Footer() { {/* Social Links */} - + + Connect + + }>
    • GitHub
    • YouTube
    • Bluesky
    • +
    • Mastodon
    • Fable
    - {/* Rest Mode Notice */} - -

    - We are currently in rest mode. Services will resume March 2026. -

    - - Subscribe to our newsletter - -

    - Be the first to know when our schedule reopens -

    + + Services + + }> +
      +
    • Book Async Reading
    • +
    • Book 20-Min Session
    • +
    • Book 60-Min Session
    • +
    {/* Free Resources */} diff --git a/src/components/ForeverTopicsCard.tsx b/src/components/ForeverTopicsCard.tsx index e9d3817..9b17136 100644 --- a/src/components/ForeverTopicsCard.tsx +++ b/src/components/ForeverTopicsCard.tsx @@ -68,11 +68,11 @@ export default function ForeverTopicsCard({ {title}

    {description && ( -

    {description}

    +

    {description}

    )}
    -
    -
    +
    +
    @@ -80,12 +80,12 @@ export default function ForeverTopicsCard({
    {topics.map((topic, index) => { const isEven = index % 2 === 0; - const borderColor = isEven ? 'border-brand-purple-dark/30' : 'border-brand-green-accent/30'; - const iconText = isEven ? 'text-brand-purple-dark' : 'text-brand-green-accent'; + const borderColor = isEven ? 'border-brand-green-dark/30' : 'border-brand-green-accent/30'; + const iconText = isEven ? 'text-brand-green-dark' : 'text-brand-green-accent'; return (
    {/* Topic Icon - emoji only, no circle, accessible */} @@ -97,7 +97,7 @@ export default function ForeverTopicsCard({ )}
    {/* Topic Title */} -

    +

    {topic.title}

    {/* Topic Description */} diff --git a/src/components/Header.tsx b/src/components/Header.tsx index cbe0e02..8975cb1 100644 --- a/src/components/Header.tsx +++ b/src/components/Header.tsx @@ -22,7 +22,7 @@ export default function Header() { return ( <>