avatarLucy Dan 蛋小姐 (she/her/她)

Free AI web copilot to create summaries, insights and extended knowledge, download it at here

5801

Abstract

cookie.</li><li><code>secure: true</code> ensures that the cookie is only sent over secure, encrypted connections (HTTPS). but since most testing environments are on localhost, it is allowed</li></ul><p id="6bc1">then executing this action looks like:</p><div id="e2cb"><pre><span class="hljs-keyword">import</span> { storeToken } <span class="hljs-keyword">from</span> <span class="hljs-string">"@/lib/actions"</span>;

<span class="hljs-keyword">async</span> <span class="hljs-keyword">function</span> <span class="hljs-title function_">onSubmit</span>(<span class="hljs-params">formData</span>) { <span class="hljs-title function_">setIsLoading</span>(<span class="hljs-literal">true</span>); <span class="hljs-keyword">try</span> { <span class="hljs-keyword">const</span> resp = <span class="hljs-keyword">await</span> http.<span class="hljs-title function_">post</span>(<span class="hljs-string">/auth/login</span>, formData);

  <span class="hljs-keyword">await</span> <span class="hljs-title function_">storeToken</span>(resp.<span class="hljs-property">data</span>);

  router.<span class="hljs-title function_">push</span>(<span class="hljs-string">"/dashboard"</span>);

  <span class="hljs-title function_">toast</span>({
    <span class="hljs-attr">title</span>: <span class="hljs-string">"Login Successful"</span>,
  });
} <span class="hljs-keyword">catch</span> (error) {
  <span class="hljs-variable language_">console</span>.<span class="hljs-title function_">error</span>(<span class="hljs-string">"error logging in"</span>, error);
} <span class="hljs-keyword">finally</span> {
  <span class="hljs-title function_">setIsLoading</span>(<span class="hljs-literal">false</span>);
}

}</pre></div><p id="173a">After testing this check your cookie storage in devtools and the token should be set:</p><figure id="de3a"><img src="https://cdn-images-1.readmedium.com/v2/resize:fit:800/1*VxsyZ7KTXg_XygebpIfq1Q.png"><figcaption></figcaption></figure><p id="7f8d">Now let’s move on to using the token to communicate with our API.</p><h1 id="ad3b">2. Accessing the Token</h1><p id="3425">So accessing the token is different depending on the context. If you are accessing it on the server it looks like:</p><div id="ba24"><pre>import {cookies} <span class="hljs-keyword">from</span> <span class="hljs-string">"next/headers"</span>;

<span class="hljs-keyword">const</span> authToken = cookies().<span class="hljs-keyword">get</span>(<span class="hljs-string">"accessToken"</span>)?.<span class="hljs-keyword">value</span> </pre></div><p id="636a">In the Client side, because we set <code>httpOnly: true</code> . How do we now access our jwt? That’s where creating an api route comes in. It would have been really cool to have a server action for retrieving the token but we don’t have that yet. “fix up Next.js team”!</p><p id="dc9e">Docs for api routes using the app router <a href="https://nextjs.org/docs/app/building-your-application/routing/route-handlers">here</a></p><p id="c93d">so the gist is a folder structure of <code>app/api/auth/token/route.ts</code> resolves to an endpoint with path of <code>/api/auth/token</code> . Now in the route.ts file we write:</p><div id="916b"><pre>import { cookies } <span class="hljs-keyword">from</span> <span class="hljs-string">'next/headers'</span>

export async <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">GET</span>(<span class="hljs-params">request: Request</span>) </span>{ <span class="hljs-keyword">const</span> <span class="hljs-variable constant_">authToken</span> = <span class="hljs-title function_ invoke__">cookies</span>().<span class="hljs-title function_ invoke__">get</span>(<span class="hljs-string">'accessToken'</span>)?.value <span class="hljs-keyword">const</span> <span class="hljs-variable constant_">headers</span> = <span class="hljs-keyword">new</span> <span class="hljs-title class_">Headers</span>(); headers.<span class="hljs-title function_ invoke__">append</span>(<span class="hljs-string">"Authorization"</span>, authToken);

<span class="hljs-keyword">const</span> <span class="hljs-variable constant_">response</span> = await <span class="hljs-title function_ invoke__">fetch</span>(`${process.env.NEXT_PUBLIC_API_URL}/user`,{
  <span class="hljs-attr">headers</span>: headers
}
<span class="hljs-keyword">if</span> (response.status === <span class="hljs-number">401</span>) {
  <span class="hljs-keyword">const</span> <span class="hljs-variable constant_">refreshPayload</span> = {
    <span class="hljs-string">"refresh_token"</span>: <span class="hljs-title function_ invoke__">cookies</span>().<span class="hljs-title function_ invoke__">get</span>(<span class="hljs-string">'refreshToken'</span>)?.value
  }
  <span class="hljs-keyword">const</span> <span class="hljs-variable constant_">res</span> = await <span class="hljs-title function_ invoke__">fetch</span>(`${process.env.NEXT_PUBLIC_API_URL}/refresh-token, {
    <span class="hljs-attr">method</span>: <span class="hljs-string">"POST"</span>,
    <span class="hljs-attr">headers</span>: {
      <span class="hljs-string">"Content-Type"</span>: <span class="hljs-string">"application/json"</span>,
    },
     <span class="hljs-attr">body</span>: JSON.<span class="hljs-title function_ invoke__">stringify</span>(refreshPayload),
  }
  
  <span class="hljs-keyword">const</span> jsonData = await res.<span class="hljs-title function_ invoke__">json</span>()
  
  <span class="hljs-title function_ invoke__">cookies</span>().<span class="hljs-title function_ invoke__">set</span>({
    <span class="hljs-attr">name</span>: <span class="hljs-string">"acce

Options

ssToken"</span>, <span class="hljs-attr">value</span>: jsonData.token, <span class="hljs-attr">httpOnly</span>: <span class="hljs-literal">true</span>, <span class="hljs-attr">sameSite</span>: <span class="hljs-string">"strict"</span>, <span class="hljs-attr">secure</span>: <span class="hljs-literal">true</span>, })

  <span class="hljs-title function_ invoke__">cookies</span>().<span class="hljs-title function_ invoke__">set</span>({
      <span class="hljs-attr">name</span>: <span class="hljs-string">"refreshToken"</span>,
      <span class="hljs-attr">value</span>: jsonData.refresh_token,
      <span class="hljs-attr">httpOnly</span>: <span class="hljs-literal">true</span>,
      <span class="hljs-attr">sameSite</span>: <span class="hljs-string">"strict"</span>,
      <span class="hljs-attr">secure</span>: <span class="hljs-literal">true</span>,
  })
} 
<span class="hljs-keyword">const</span> resData = {
    <span class="hljs-attr">token</span>: <span class="hljs-title function_ invoke__">cookies</span>().<span class="hljs-title function_ invoke__">get</span>(<span class="hljs-string">'accessToken'</span>)?.value
}



<span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">Response</span>(JSON.<span class="hljs-title function_ invoke__">stringify</span>(resData), {
    <span class="hljs-attr">status</span>: <span class="hljs-number">200</span>,
    <span class="hljs-attr">headers</span>: {
        <span class="hljs-string">'Content-Type'</span>: <span class="hljs-string">'application/json'</span>,
    },
})

}</pre></div><p id="66db">Now let’s break down what this api route does:</p><ul><li>we retrieve the jwt from the cookie store</li><li>we make a request to /user on our api to check if the token is still valid. /user can be replaced with any protected route on your api</li><li>if we receive the <code>unauthorized(401)</code> error code we send a request to get a new token pair with our refresh token.</li><li>then we return the valid token back to the client for use.</li></ul><p id="260f">Now, to make use of this API route we can write an axios interceptor like so:</p><div id="b457"><pre>axiosInstance.<span class="hljs-property">interceptors</span>.<span class="hljs-property">request</span>.<span class="hljs-title function_">use</span>(<span class="hljs-keyword">async</span> (config) => { <span class="hljs-keyword">if</span> (config.<span class="hljs-property">url</span>?.<span class="hljs-title function_">includes</span>(<span class="hljs-string">"auth"</span>)) { <span class="hljs-keyword">return</span> config }

    <span class="hljs-keyword">const</span> res = <span class="hljs-keyword">await</span> <span class="hljs-title function_">fetch</span>(<span class="hljs-string">'/api/auth/token'</span>)
    <span class="hljs-keyword">const</span> resData = <span class="hljs-keyword">await</span> res.<span class="hljs-title function_">json</span>()
    <span class="hljs-keyword">const</span> token = resData?.<span class="hljs-property">token</span>

    config.<span class="hljs-property">headers</span>![<span class="hljs-string">'Authorization'</span>] = <span class="hljs-string">"Bearer "</span> + token
     <span class="hljs-keyword">return</span> config
},
<span class="hljs-function">(<span class="hljs-params">error</span>) =&gt;</span> {
    <span class="hljs-keyword">return</span> <span class="hljs-title class_">Promise</span>.<span class="hljs-title function_">reject</span>(error)
}

)</pre></div><p id="8f27">What this interceptor does is: “if the app is making a request to an auth route like <code>/auth/login</code> , <code>/auth/signup</code> no token is sent along with the request but if it is to a protected route it fetches the access token from our api route and passes it in the <code>Authorization</code> header.</p><h2 id="c7b2">Further reading:</h2><p id="fb63">This article was greatly inspired by:</p><div id="b5f3" class="link-block"> <a href="https://javascript.plainenglish.io/next-js-secure-authentication-using-http-only-cookie-graphql-or-rest-a4ef94cec9e8"> <div> <div> <h2>Next.js Secure Authentication Using http-only Cookie (GraphQL or REST)</h2> <div><h3>When it comes to user authentication we need to make sure our application is secured from any potential threats. To…</h3></div> <div><p>javascript.plainenglish.io</p></div> </div> <div> <div style="background-image: url(https://miro.readmedium.com/v2/resize:fit:320/1*FBBZ5ksEs057sEfEkcl42g.png)"></div> </div> </div> </a> </div><p id="7edc">If you want to see how to do this with graphql. or you are working on older versions of Next without server actions, I suggest the article.</p><p id="948d">Thanks for reading and if you have any questions, drop them in the comments.</p><p id="50be">Happy building!🚀</p><h1 id="d403">Stackademic</h1><p id="3a1b"><i>Thank you for reading until the end. Before you go:</i></p><ul><li><i>Please consider <b>clapping</b> and <b>following</b> the writer! 👏</i></li><li><i>Follow us on <a href="https://twitter.com/stackademichq"><b>Twitter(X)</b></a>, <a href="https://www.linkedin.com/company/stackademic"><b>LinkedIn</b></a>, and <a href="https://www.youtube.com/c/stackademic"><b>YouTube</b></a><b>.</b></i></li><li><i>Visit <a href="http://stackademic.com/"><b>Stackademic.com</b></a> to find out more about how we are democratizing free programming education around the world.</i></li></ul></article></body>

What Is Your Relationship With Expressing Emotions?

Sunny Side Updates with The Brain is a Noodle || Week 59

Photo by Jamie Brown on Unsplash

I’m someone who laughs easily, and cries … difficulty.

It’s easy to crack a joke that makes me laugh. As long as they’re not offensive and hurtful, I pretty much like them all, lame to brilliant.

Yet on the flip side, it takes a lot to make me cry. I don’t cry … at the usual things. I don’t cry at loss. I don’t cry about deaths. I don’t cry about negative things.

I mostly cry about instances when people come together and actually do something altruistic. Those moments in tv shows really hit me. It really made me reflect on why, helping me to realize that I cry because I don’t naturally believe in the hope that people can be kind, regardless of how much I promote it. Maybe … that’s why I promote it in the first place. It seems rare and we, as humanity, need more of it to happen.

Digging deep into why, how and when I express emotions has been so helpful in elucidating which beliefs I have. This brings me to this week’s shortform prompt:

What is your relationship with expressing emotions? Which one(s) do you express most easily? Which one(s) are difficult to express or feel? What are some reasons you think that’s the case?

I’m looking forward to hearing more about your stance!

Until next week,

Lucy 🍳 EIC of The Brain is a Noodle* Podcast || Twitter || Instagram || Redbubble || Newsletter *This is factually incorrect. Please absolutely do not go out and eat brains. 📚 PS, I have a new book?????????

✍ Active Challenges

Weekly Shortform Challenge How to join || Prompt Archive || Responses

This week’s shortform prompt
What is your relationship with expressing emotions? Which one(s) do you express most easily? Which one(s) are difficult to express or feel? What are some reasons you think that’s the case?

Daily Poetry Challenge Prompt Archive || Responses || Subscribe for weekly reminders!

#OngoingAdventure Fiction Series Submit your chapter here || Start reading here

🍜 Piping Hot New(dle) Pieces of the Week

Challenge: *highlight* the ones you bookmarked/ read and make sure everyone gets highlighted at least once! ❤

🧠🍜 [1] Poem: To Be Truly Free by Sruthi Korlakunta ‘I walked like I was free until I looked back. down at my feet, I was held still.’

🧠🍜 [2] My Favourite Snippets of Conversations with Friends by Zsófia Sáfár ‘“I stopped looking for the meaning of life and reconciled myself to the fact that in a metaphysical sense, our existence is pointless.”’

🧠🍜 [3] Your Cognitive Health Is Very Important by Isabel Young ‘There are many reasons why it is so important that you should pay attention to your cognitive health. The importance of cognitive health has become a major concern for most people.’

🧠🍜 [4] The House of Rules by Kyomi O'Connor ‘The House of Rules determines the rules of housing, yet subsequently, it projects the judgment how well you fit or how badly you fail in the house.’

🧠🍜 [5] Righteous Stick by KSHernandez ‘God rest, my Queen this is a song for your beans’

🧠🍜 [6] Walking Through The Mountains by Simão Cunha ‘From Xertelo to Lagoa Marinho, 20km of distance; By paths less traveled, My feet scream for help.’

🧠🍜 [7] I Am Here in the Shadows by Obinna Uruakpa ‘It is a little too early to celebrate my departure or to roll out the valedictory drums ’cause I am not really gone.’

🧠🍜 [8] Value of Patience by Tarun Gupta ‘Patience is a virtue. It is the most important key in any journey. When traveling, it requires patience until we reach the destination. During cooking, we need patience until the vegetables soften.’

🧠🍜 [9] White Boy Tears by Kate Lynch ‘Kyle Rittenhouse cried on the witness stand. He’s white, and was found not guilty. If you don’t know the story, look it up. There is something to be learned here. White parents, we can do something with our disillusion and emptiness.’

🧠🍜 [10] Whys of Lives by Tarun Gupta ‘These days everyone has become subject to an external locus. They don’t have an identity of themselves.’

🧠🍜 [11] Cognitive Health refers to a person’s mental and emotional wellbeing. by Isabel Young ‘Cognitive health is also known as brain health, mental health or psychological health. It is important for people of all ages to stay physically and mentally healthy so they can live life to the fullest.’

🧠🍜 [12] Will Someone Take a Bite of My Tasty Poem? by Michael Burg, MD (AKA Medium Michael Burg) ‘There once was a poet named Mike His verses, fear they did strike When nobody came He took all the blame And readers, they all took a hike’

🧠🍜 [13] Caring or caring? by Dennett ‘Five days hospitalized — not a card or a bouquet, not an email, call, or text.’

🧠🍜 [14] Signs from Within by Mark Tulin ‘There are signs within me, rules on how to live, I harbor unconsciously, guideposts on my journey, the world instilled in me’

🧠🍜 [15] There Was A Little Girl, With Heart So Pure by Shivangi Patel ‘There was a little girl with a heart so pure’

🧠🍜 [16] Why Indian-Americans Call Non-relatives “Uncle” and “Aunty” by Gauri Sirur ‘In India, it is the custom to address people a generation older than oneself as “uncle” or “aunty.” It is seen as ill-mannered and disrespectful to call your elders by their first names.’

🧠🍜 [17] Regaining My True Self by Imad ‘I was in a barren place for forlorn minds; where words could not find, devoid of inspiration, for in that space I could not rhyme.’

🧠🍜 [18] Shrooms by Michael Burg, MD (AKA Medium Michael Burg) ‘I’m dyna try a new shroom Found growing in my room’

🧠🍜 [19] Old Haunts and Hauntings by Dennett ‘We went to downtown, haven’t been in so long, used to be one of our haunts, favorite spots to be, back when being meant more than staying home’

🧠🍜 [20] Missing Multiplies by Nicole Sponsel ‘I can not count It is too much The times I held my tongue’

🧠🍜 [21] Two numbers a cosmos do make by Jacob Flanders ‘infinity, which includes — nay, exudes — all that ever was or will be,’

🧠🍜 [22] My Favourite Beatles Song Was Actually Written and Sung By Ringo Starr by Edward John ‘Although this song was credited only to Richard Starkey (Ringo’s real name), George Harrison actually helped him write it.’

🧠🍜 [23] The House of Debate by Ravyne Hawke ‘Most couples argue over big things — money, sex, children, the bills’

🧠🍜 [24] The Acrostics of Mushrooms by Smillew Rahcuef ‘Magnificent Michael and his tagging prowess brought my attention Unto this spongy Subject.’

🧠🍜 [25] Mack and Cheese by Michael Burg, MD (AKA Medium Michael Burg) ‘There once was a dude, name o’ Mack’

🧠🍜 [26] The Universe keeps poking me by Marilyn J Wolf ‘I still think of you. Mostly when the Universe pokes me.’

🧠🍜 [27] Wireless … Bruh by Michael Burg, MD (AKA Medium Michael Burg) ‘There once was a wireless bruh’

🧠🍜 [28] I feel lighter by Ali ‘Anxiety strapped across my back. That’s its way of Boldly taking a stance Calling itself my best friend while’

🧠🍜 [29] Addiction to Pain by Tarun Gupta ‘Humans are natural addicts. We want to keep doing something that we enjoy irrespective of either a negative or a positive reason.’

🧠🍜 [30] The Rain of Our Separation by Mihai Brinas ‘It is raining in a roar it is raining with wonder that between us’

🧠🍜 [31] Dancing With The ABC’s by Thalia Dunn ‘A bumbling ballerina cheerfully charms the crowd with delicate yet daring steps and’

🧠🍜 [32] It May Not Sound Ambitious, But It Is. by Las siete y más ‘I love this lyric: ‘and I hope kindness comes your way’ of Someday Soon by Alexi Murdoch.’

🧠🍜 [33] An Abecedarian Riddle by Penny Grubb ‘A book collects dust Every flurrying gust hovers in joy’

🔊 Voices to Amplify

We don’t have to leave it to the algorithm to suggest our favourite pieces! Here are some of my archived faves!

Thank you to a. a. gallagher, Kevin Alexander, Arturo Dominguez, Maggie LaFae and TC Hails for these amazing pieces! ♥

🧠🍜 Thank you to the Noodle Team!

challenge: pick 3 writers you haven’t met yet and get acquainted with their pieces!

New writers: Preeti Ramachandran | Suzanne V. Tanner | Kristen Stark | Smillew Rahcuef | Marilyn J Wolf | Edward John | Joshua J. Lyon | Arnas Mik | Jay Krasnow | Roxanne Barbour

Yume Suki | Jacob Flanders | Simão Cunha | Francine Fallara | Scot Butwell | Kristina God |Hirdesh Matta | Edward Riley | Anthony David Vernon | Evergreen Eden | Teresa Young | Geeta Anjali | Alina Vrabie | Maia Sham | John Rehg | Anthony V. Lombardo | Anne Chisom | Cristi Ackerman Wells | Listy Jumar | Rane Kelze | Isabel Young | Ali | AK (Aaska Aejaz) | Matt Inman | Penny Grubb | Anastasia S. Manyonga | Nicole Sponsel | Brian Gilmore (aka — Bumpy J) | Asma | Leese Wright | Samah Fadil | Mittu Ravi | Lubna Yusuf | Deeksha Agrawal | Julladonna Park | Gauri Sirur | Ann Syson | Ellie Jacobson | Hogan Torah | Q U I N T E S S A | Misty Rae | Ravyne Hawke | Sai Kiran Ramarapu | Lola Sense | Glad Doggett | Dominick Bernard Francois | Colm Clark | Damilola Abiola | Penelope Mayfield | Pierce McIntyre | Abbey Streett | Kathy Jacobs | Mihai Brinas | Margie Willis | Jeanne-Erin | Troy B. Jordan | Zsófia Sáfár | Hal H. Harris | Greg Proffit | Rebecca Herz | Winston | Natasha Kurien | K S Fielding | Vidya Sury, Collecting Smiles | Cori Holmes | Jee Young Park | Caroline de Braganza | Kate Lynch | Assumpta Nalubowa | Lisa Gerard Braun | Nes Laidler | Reanna Szeszol | The Positive Journal | Medomfo Owusu | Sh*t Happens — Lost Girl Travel | Obinna Uruakpa | Sean Peck | Susan Alison | Kevin Alexander | Sharing Randomly | Brenda Covarrubias | Jimmy Misner Jr. | Stevie Wright | Disha Choksi | Roselyn Violet | Dazzling Shene | Jennifer Leth | John Gobins | Karen Falcon | America Zed | CARMEN F MICSA | Karen Schwartz | MIGHTY MISCELLANY | Ajah Hales | Gisel La Fleur | Roselyn Violet | Marcus Chan | Jennifer Dunne | Cameron Sidhe | Earl Grey Sea | Rakshita Upadhyay | O.M. Fernandes | Beth Nintzel | Barbara Dalton | George Cloake | Nhi Diep | Tarun Gupta | HerPrivateLife | Sohrab Khandelwal | Nerissa Talique | Gracia Kleijnen | Betsy Denson | KSHernandez | Luke DeLalio | Rachella Angel Page | Teressa P. | VV Valentine | Bhavya Mehta | Suntonu Bhadra | Noah Levy | Suzy Hazelwood | Ashlea Morgan | LS | Jessie Waddell | Dave Logan | Candy Marie | Himanshi B | Zihan | Elle How | K.S. | Sherry McGuinn | Diana Dee | Rambling Rose | Doran Lamb | Avi Kotzer | A.M. Radulescu | Laurie Perez | Paul Mansfield | B.R. Shenoy | Nada Chehade| Coco Joan | Bingz Huang | Shreya Badonia | Kimberly Carter | Las siete y más | Warren Brown | Trista Signe Ainswort | Kyomi O’Connor | Kay Bee | MaggieLaFae | Alex Godley | Haider Jamal | Josie Elbiry | Anthony Jackson | Hannah M. Moore | Michael Hollifield | Yana Bostongirl | TC Hails | Orla Kenny | Samedra Carter | Tatum Hamernik | Thalia Dunn | Nia Simone McLeod | Josie Elbiry | Keegan Roembke | Noorain Hassan, BMS | Humaira Iqbal | Zachary Burg | Bob Pepe | Will Hull | Jason | Courtenay S. Gray | Sahil Patel | Meenal Gupta | Amy Lee Kite | Evan Wildstein | Hilda Carroll | Chloe Hill | Paola Perez | Matt Ray | Wolfie Bain | Dena Ogden | Tasneem Kagalwalla | Yan Huang | Tree Langdon | Stuart Englander | Jennifer McDougall | Aaron Kemp | Rachel Ramkaran (she/her) | LS | Lori Welch Brown | Nicole Jiang | Crystalclearcandace | Em Unravelling | Jupiter Grant | Elle Beau ❇︎ | Suman Sandhu | Adam Deitsch | Mia Z. Edwards | David Majister | JF | Zach Neuman | Chris Mooney-Singh | Toya Qualls-Barnette | Karen Lappa Haas | Alan Henley | Michelle Bonfils | Zach Klebaner | Anna | Deepshikha Bhagat | Carlos Garbiras | Katrina Bos | Lisa Bolin | Sohaib Roomi | The Dozen | Malik Bellamy | Olivia Th | Shaista Malik | Emily Wilcox | Brajendra | Eva Rotolo | Bhavna Narula | Shannon Hugman | Ryan DeJonghe | Ryan DeJonghe | Dennett | Swagat Choudhury | Vivian | Mark Tulin | Arslan Mirza | Amber Carlson | Urfa | Whatsinanaim | Amy Pierovich, Ed.D. | Carolyn Riker | Tally | Shivangi Patel | Giulia | ScienceDuuude | Rachael Ann Sand | Divina Grey | Sarah Paris | DISHA GARG | Jen Kleinknecht | janny’s heart | Penofgold | Blank Voice | Kele Mogotsi | Jessie London | Indubala Kachhawa | Radhika Ghose | Mil H. | Zeno Faber | Maziar Ghaderi | Julia Appa | Campbell Christensen | Allison Gaines | Lori Lamothe | Tima Loku | Kim McKinney | Baye Amina | Tom Fenske | Johannes Mudi | Kasun Ranasinghe | Just a Slytherin hissing | Dr. Fatima Imam | Ntathu Allen | Somsubhra Banerjee | Veronica Georgieva | Life is Amazing with Books and Writers | Dandy Lioness 🌻 | Mindsmatter | Michael Ranjitsingh | Anjali Samaraweera | Krupesh Raikar | Rusty Alderson | Dr. Preeti Singh | Punch Drunk Cola | Melissa Speed | Ntathu Allen | Denise G | Carolyn Hastings | Tej | Vijini Mallawaarachchi | Amy Marley | Jac Gautreau | Erivaldo Ricardo | Roz Warren | Melissa Bee | Pretheesh Presannan | Daniel A. Teo | Anuradha Wickramarachchi | Niru | Priyanka Mane | Em Hoccane | Synthia S. | Alexandra Forsyth | R. Rangan PhD | Jacobo the First | Connie Song | Fathiyah Zb | Not quite Steve Fisher | Amna Asif | Aimée Gramblin | A Fresh Pot of Coffee | Rebecca Stevens A. | Imad | James G Brennan | Mary Keating | Jay Avery | h.a wadi | Pablo Pereyra | Isaac | jenine bsharah baines | Rochelle Silva | Jade-Ceres Violet D. Munoz | Ruchi Thalwal | Clare Almand | Dana Sanford | Naomi Leilani Acosta | Dr. Jackie Greenwood | Fathiyah Zb |

Ps, if any of these links are outdated, please leave a note to let me know!

Tbin Newsletter
Tbin
Relationship
Emotions
Mental Health
Recommended from ReadMedium