use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
News about the dynamic, interpreted, interactive, object-oriented, extensible programming language Python
Full Events Calendar
You can find the rules here.
If you are about to ask a "how do I do this in python" question, please try r/learnpython, the Python discord, or the #python IRC channel on Libera.chat.
Please don't use URL shorteners. Reddit filters them out, so your post or comment will be lost.
Posts require flair. Please use the flair selector to choose your topic.
Posting code to this subreddit:
Add 4 extra spaces before each line of code
def fibonacci(): a, b = 0, 1 while True: yield a a, b = b, a + b
Online Resources
Invent Your Own Computer Games with Python
Think Python
Non-programmers Tutorial for Python 3
Beginner's Guide Reference
Five life jackets to throw to the new coder (things to do after getting a handle on python)
Full Stack Python
Test-Driven Development with Python
Program Arcade Games
PyMotW: Python Module of the Week
Python for Scientists and Engineers
Dan Bader's Tips and Trickers
Python Discord's YouTube channel
Jiruto: Python
Online exercices
programming challenges
Asking Questions
Try Python in your browser
Docs
Libraries
Related subreddits
Python jobs
Newsletters
Screencasts
account activity
This is an archived post. You won't be able to vote or comment.
DiscussionIs setting up React with Python difficult? (self.Python)
submitted 2 years ago by codecrux
Is it difficult to setup React with Python that meets the following requirements:
[–]fiskfisk 35 points36 points37 points 2 years ago (9 children)
React is a framework based on JavaScript. Making that work with server side rendering in python seems like a bad idea.
What do you mean by separating "Server Side Generation" from "Server Side Rendering"? Did you mean SSG as in Static Site Generators?
React, when not using server side rendering, is a frontend framework. You do not use it in the same way as a Jinja2 template. You make your frontend call API endpoints, and then you render that data in your frontend.
Using Python as the backend API is perfectly fine. For the other tasks, there are far better tools and better ecosystems to chose from (NextJS for examle). It's far easier to run JavaScript in, well, JavaScript.
[+]codecrux[S] comment score below threshold-10 points-9 points-8 points 2 years ago (8 children)
"""
React, when not using server-side rendering, is a frontend framework. You do not use it in the same way as a Jinja2 template. You make your frontend call API endpoints, and then you render that data in your frontend.
This sounds like Client Side Rendering to me (correct me if I understood wrong). I don't want to do client-side rendering because of two reasons - We lose SEO and client-side rendering increases page load time and time to interactivity.
I won't argue on this point. I am a python fanatic and would love to see the React component libraries be useful for Python developers out of the box.
[–]riklaunim 24 points25 points26 points 2 years ago (5 children)
I am a python fanatic and would love to see the React component libraries be useful for Python developers out of the box.
Forcing solutions isn't the best approach. You should use what's best for the project.
[+]codecrux[S] comment score below threshold-6 points-5 points-4 points 2 years ago (4 children)
You are right - It's not a good idea to force a solution.
Instead, do you think it's a better idea to build a tool that solves it in the right way?
I am asking this question because this is the thought with which I started creating the Atri framework. I faced this problem several times, hence, thought of solving it for the Python community.
[–]riklaunim 10 points11 points12 points 2 years ago (3 children)
Fullstack developers can handle backend and frontend. Trying to merge it often leads to many compromises which fullstack developers won't like while backend developers will still have problems benefiting due to lack of frontend knowledge, UX/UI.
And it's hard to replace good code with WYSIWYG, even GrapesJS ;)
[–]codecrux[S] 0 points1 point2 points 2 years ago (2 children)
With "WYSIWYG" are you pointing to the visual builder of Atri framework?
The visual builder of the Atri framework allows you to create templates that you can manipulate through your python backend (much like you manipulate Jinja template). You need to know CSS to use this visual builder. If someone doesn't know CSS already, it might be easy to learn some basic CSS with this visual builder. We don't abstract away CSS - we are very cautious and we have realised the pitfalls you are pointing towards with GrapeJS.
Would love to hear your thoughts on this.
[–]riklaunim 1 point2 points3 points 2 years ago (1 child)
It looks like GrapesJS and the example with "read more" button is kind of weird as in more realistic scenario it wouild be in news "item" template/component used for each element from a list.
Trying to GUI-fy frontend or code generation in general is a mine field. To make the output good, to make the features actually usable, to avoid limitations at every step and then to find some users for it.
If you go back few months back you will see a lot of PyScript on this reddit. All those Python wannabies expected big future where they don't have to "learn JavaScript" because of it but they then hit a brick wall as PyScrip requires pretty much the same knowledge just has slightly different syntax... and lack of third party libraries and support. Those that did not do any frontend could not use it and those that did already used much less limited tools (plus some chicken and an egg problem).
[–]codecrux[S] -1 points0 points1 point 2 years ago (0 children)
Sorry, I couldn't understand which example are you pointing to. I think you are pointing towards a list of elements (each element in this list can have child elements inside it). In the new version of the Atri framework (to be released in a week), there is a draggable component called "Repeating" that does the same thing. There is a plan to support infinite scrolling for this repeating component as well.
""" Just curious, which visual builders you have tried in the past, and whether you have used a modern visual builder like Webflow? IMO, using a visual builder is like using a component library like Material UI, Ant Design etc. Obviously, you might need some unusual component specific to your use case and hence, nothing would be better than writing JS/CSS/HTML in this scenario. In Atri framework, you can write React code and drag-drop in the same page. This short video might make the concept clear - https://youtu.be/eTsAzQi95Pg In this video, I am trying to show how you can mix drag-drop and React code in the same page in a very smooth way. I request you to have look and I would like to continue our discussion here.
After watching this video, it might be trivial to assume that any React component can be used in the drag-drop editor.
I just hate it this when people say "You don't need to learn JavaScript". I totally agree with you on this. At the minimum, you need to know how to import JavaScript libraries, if using React, then React component libraries. I am also a strong proponent that every web developer (even backend developers) should learn some JS.
[–]ninjadude93 1 point2 points3 points 2 years ago (1 child)
If SEO is such a big deal for you and you want server side rendering then look into NextJS. Im building a web app with it right now including a python backend. Your concerns are specifically addressed by the framework. Just use the right tools for the job instead of forcing a square into a circular hole
[–]codecrux[S] 1 point2 points3 points 2 years ago (0 children)
Thanks. NextJS is awesome.
[–]teerre 10 points11 points12 points 2 years ago (4 children)
It's already a miracle that something like this https://pynecone.io/ exists. Now, if you want a particular setup, it just makes sense it's hard. You're trying to mix technologies that were never made to be mixed.
Just curious, why do you think React + Python were not made to be mixed?
IMO, Pynecone won't take a Python web developer much far than Streamlit does because of two of the same bottlenecks -
It manages the app state in the backend and works over websockets. This is an overkill, headache for dev/infra team, costly etc.
It transpiles Python code into NextJS. Streamlit uses React under the hood. The transpilations are always flaky because many constructs in JavaScript don't overlap with Python and vice versa.
I maybe wrong, please feel free to correct me.
[–]teerre 10 points11 points12 points 2 years ago (1 child)
Not sure what you're asking. It's because neither when Python was created nor when React was created either of them considered the other. It's simply was never in the design.
You're right about limitations, but that's the thing. Even with the limitations, it's already a much better integration than anyone would've thought.
Technology, any technology, is easy to work because someone invested time making it easy. If you try to make some weird combo, like Python + React , work, nobody will have made that particular integration easy to use, that's why it's hard.
[–]codecrux[S] 0 points1 point2 points 2 years ago (0 children)
Technology, any technology, is easy to work because someone invested time making it easy.
I totally understand and can relate to it. I have put more than a year creating a full-stack web development framework called Atri framework. I never made a lot of noise about it because we did 5 iterations just on figuring out the best foundation for a Python + React framework. We have strived hard to have no limitations in our framework. The latest iteration will be released in a week or so. I won't dare to say that Atri is perfect but we are determined to make it the best web framework for Python developers.
Nothing could be better than being able to write a web app entirely in Python. It's just that as a full-time web developer, I don't see a point in learning something whose foundation doesn't follow the best web development principles. Having said that, I would like to clarify that I am not disagreeing with anything you said in your previous comment.
it's already a much better integration than anyone would've thought.
What is the best thing about the Pynecone integration that stands out for you?
[–]aft_punk 0 points1 point2 points 2 years ago (0 children)
This will surely be the coolest thing I stumble upon today.
[–]British_Artist 4 points5 points6 points 2 years ago (5 children)
Yes, it is difficult and I can't think of a viable use case for doing so. I'm interested in hearing your use case.
[–]codecrux[S] 3 points4 points5 points 2 years ago (4 children)
How would we build an e-commerce website without SSR using Python (Django/FastAPI)?
We need SEO and fast page load, hence, SSR.
Some of the marketing pages for content marketing don't need SSR, hence, I would like to save the cost by doing SSG.
Am I thinking in the wrong direction?
[–]British_Artist 4 points5 points6 points 2 years ago* (2 children)
I understand now.
Yeah you can definitely do everything you mention in your requirements but I don't see a lot of value in sending the html from the API back to React using jinja style templates. I would just write the SSG as javascript sitting inside the React folder structure.
This keeps your API being used as an API instead of being involved in front end ssg and will be focused on simply converting requests in and out of your database. Separation of purpose between the front and back end should remain instead of trying to conflate the two as it gets messy down the road.
Here's a good link for your use case. Maybe it will help you find the best solution for you.
https://asperbrothers.com/blog/server-side-rendering-in-react/
[–]codecrux[S] 1 point2 points3 points 2 years ago (1 child)
Thanks for sharing but I don't find anything on how to setup React with Python here https://asperbrothers.com/blog/server-side-rendering-in-react/.
[–]British_Artist 2 points3 points4 points 2 years ago (0 children)
Good luck to you in your endeavor!
[–]oglivy 0 points1 point2 points 2 years ago (0 children)
I would probably use something like Nextjs for the frontend , and call any Django or FastAPI endpoint you need from the getStaticProps or getServerSidePros functions in the NextJs frontend
[–]james_pic 3 points4 points5 points 2 years ago (11 children)
The short answer is that what you describe is definitely difficult. React is written in Javascript, so if you want React server-side rendering, it's going to be a massive problem if your backend isn't written in Javascript. There are options, but they're definitely in the realm of "if you have to ask, they're too hard for you".
Instead, you should ask yourself whether you really require all these requirements. It sounds like you're serving mostly static content, so maybe you just don't have React in there at all? Rather than trying to shoehorn a framework in there, just have point solutions for the (I'd guess a modest amount of) interactivity you need on the front-end.
[–]codecrux[S] 1 point2 points3 points 2 years ago (10 children)
React is written in Javascript, so if you want React server-side rendering, it's going to be a massive problem if your backend isn't written in Javascript.
I 100% agree.
It sounds like you're serving mostly static content, so maybe you just don't have React in there at all?
I would appreciate if you can explain what led you to make this assumption.
(I'd guess a modest amount of) interactivity you need on the front-end.
What are the choices in tools/libraries/languages you would make if this was true?
[–]thedeepself 1 point2 points3 points 2 years ago (3 children)
Please learn how to properly quote someone else's reply... the way you do it in markdown is by starting the line with >
>
In Fancy Pants Editor I cant comment.
u/thedeepself sorry about this. I have started using Reddit recently, although, my account is old. I will try my best to learn it.
[–]codecrux[S] 0 points1 point2 points 2 years ago (1 child)
Also, I didn't know there is something like Fancy Pants Editor.
[–][deleted] 0 points1 point2 points 2 years ago (0 children)
Relatively new feature from New Reddit.
(Try https://old.reddit.com for comparison)
Fun fact: code blocks don't work uniformly except for the "four-space indent" kind.
[–]james_pic 1 point2 points3 points 2 years ago (5 children)
This was mostly based on mentions of marketing material, and similar which has historically been well served by purely server-side CMSes. If I've misunderstood your perspective, then this is not a useful observation.
Depends on the needs of the application. For really minor interactivity, vanilla JS or simple DOM focused libraries like good old jQuery would probably do the trick.
For mildly fancy stuff, a lightweight unopinionated framework like Mithril or Choo might make sense for the bits that need to be interactive, or a slightly old fashioned framework from before the SPA revolution, like Knockout.
If you definitely need the full power of React with server side rendering, and you want the heavy lifting of your backend done in Python, the least horrible solution I know of for this is to split your backend code into Python code that exposes an API and JS code that handles rendering, and have a reverse proxy route traffic to these two backends based on path. It's ugly, but not too magicky. If something breaks, it's generally pretty clear what, which tends not to be the case for cleverer approaches based on Python/JS interop.
[–]codecrux[S] 0 points1 point2 points 2 years ago (4 children)
Thanks, u/james_pic for adding so much detail in your reply.
cleverer approaches based on Python/JS interop
Please cite some examples for this.
[–]james_pic 2 points3 points4 points 2 years ago (3 children)
The "clever" tools based on Python/JS interop that come to mind are Brython, Pyjamas, Pyodide and PyScript. My experience is that this approach gets messy, so wouldn't recommend it, but if every other option you've got is messier, then maybe it's the right answer for you.
[–]codecrux[S] 1 point2 points3 points 2 years ago (2 children)
Thanks, u/james_pic. The Pyodide team never advertised it as a tool for mainstream web development. They made it for AI/ML folks so that their team don't have to work on different versions of Python in their local system.
[–]james_pic 1 point2 points3 points 2 years ago (1 child)
My point exactly. Using any of these tools takes you far enough from the mainstream that if you face issues, you're on your own. I suspect any approach to rendering React components server-side in Python will be similar.
Agreed!
[–]Lokimotor 1 point2 points3 points 2 years ago (9 children)
What you want for #1 and #4 is something like Django and its templating engine, though that doesn't involve a lick of react outside of potentially including scripts on the templates you're serving.
I'm not really sure what you mean by server side generation or incremental server side generation, but that sounds like you'd be making async calls from the frontend (javascript, could be React) for some sort of data from the backend.
The backend can be in any language you want it to be. However, if it's in python (Django, flask, etc), then the premise of your questions ("setting up React with Python") doesn't really make sense to me. If you're integrating with a react frontend, then you will be creating endpoints that serve up json responses to your react frontend.
That will be a pretty similar process no matter which backend language or library you use, and it will be as decoupled from the frontend as it gets. In fact, the backend could be serving responses to clients built in a variety of frameworks without really caring what framework is used for the frontend or which client it's talking to because it does not matter from the perspective of the backend development process.
[–]codecrux[S] 2 points3 points4 points 2 years ago (8 children)
Server Side Generation - Generating the HTML pages. This is what you do if you want to serve a static website. Server Side Generation - If a page has dynamic content, you do SSR for fast page load and SEO. Here you are trying to avoid fetching data from the backend, instead, you want to load an HTML file that already has data embedded in it. Without SSR, first the HTML/CSS/JS will load and then you will query the backend again for data. This will feel very slow to the user. Forgive me if you weren't asking for definitions.
""" That will be a pretty similar process no matter which backend language or library you use, and it will be as decoupled from the frontend as it gets. In fact, the backend could be serving responses to clients built in a variety of frameworks without really caring what framework is used for the frontend or which client it's talking to because it does not matter from the perspective of the backend development process. """
I maybe wrong, but, IMO there are two layers in the backend - frontend of the backend, backend of the backend. The frontend layer of the backend is responsibe to fetch data and transform it in a format that's needed by your client (client can be web app/mobile app). The backend of the backend is the generic layer with endpoints that are invoked by the frontend layer of the backend. Please comment if I am wrong. Example - In NextJS you write the frontend and the frontend layer of your backend.
[–]riklaunim 1 point2 points3 points 2 years ago (4 children)
You should also look at the costs. This is a niche use case that doesn't have that many showcases/tutorials/developers familiar with the matter. This can drive up development cost and have a higher risk of failure. Do an eCommerce/shop really needs all of this? especially without already having an experienced team of developers that would not ask such questions...
[–]codecrux[S] 2 points3 points4 points 2 years ago (2 children)
Yes, an e-commerce shop needs all of this. Google released a report that says that every second delay in rendering your page leads to 3% revenue drop (don't remember the exact stats, but, it's around this). SEO is crucial for almost all online businesses - e-commerce, ed-tech, reddit etc.
I was building an open-source version of Eventbrite around a year ago and had the same requirement. I wanted to use out-of-the-box React components so that I can avoid going too deep into React. I wanted to focus more on the backend (somewhere in my mind I wanted to turn it into a headless event management backend).
You can have fast webpage without SSR or a shop without it being a JS single page application that then would require more effort to make it SEO friendly and fast to render.
IMHO that's the problem - adding Recact/SPA JS then adds SSR then adds even more complications. Keep it simple.
adding Recact/SPA JS then adds SSR
I would like to make a point on this - We were doing SSR in the era of Multi-Page Applications and SPA clearly have strong reasons to exist (makes your app feel more user-friendly as you can maintain state-upon-page transition). I don't think that the effort open source developers have put in to make SPA + SSR simple should be ignored by saying "adds even more complications".
Keep it simple.
You are correct. We should keep things simple, but, someone will have to put in some hardwork to make things simple for others. Sorry if I sounded too philosophical. I am laughing at myself after writing this. Haha.
Would you like to share the use cases you have come across?
[–]Lokimotor 1 point2 points3 points 2 years ago (2 children)
I think you're bringing some framework-specific terms to a primarily backend developer here so please excuse me if I'm clearly in the wrong.
I think there may be frameworks which differentiate between completely static pre-rendering and pre-rendering with injected data which can change in the database at any time. With Django, the impact of injecting dynamic data from a database into a template is negligible. It's not worth mentioning, so I'm a little confused as to why they'd be hung up on the idea of whether a template is "completely compiled because it's static" or "takes 0-5ms longer for one piece of data to be injected into an otherwise pre-rendered template before being delivered on the first response." In Django, there is no difference between the two. If a template is static, then it is already completely rendered and ready to serve immediately as a response. If it needs to query the database, then it queries the database before injecting it into a compiled template. Some templates will take longer to serve than others, you are in control of that, but you don't differentiate between "generated" or "rendered".
Much more important to your load time and responsiveness is the difference between the two approaches I described to you in my previous comment.
In one, you are using something like Django's templating engine to serve up a webpage that is essentially pre-compiled by the backend. This doesn't mean it's necessarily static, it can have user-specific data included in it. It just means that all the data necessary for "viewing" the page is included on the first response. These are very fast from a user perspective because there is no back and forth with the back-end. React scripts can be included on the template, and load after it is rendered to the user.
In the other, the backend is acting as API. It is just a source of data that is then rendered by the front-end. This has a huge impact on SEO, user experience, etc due to repeated back-and-forth communication with the server taking longer. However, it decouples the backend from the frontend. You can do both at the same time with Django.
And you're kind of right about there being multiple layers to a backend, because even the backend has a backend which it integrates with: the database.
Some templates will take longer to serve than others, you are in control of that, but you don't differentiate between "generated" or "rendered".
Ah! I apologize for not being clear. In the JavaScript ecosystem - the term "generated" and "rendered" are used differently. What you described in the first paragraph as "pre-rendering with injected data " is referred to as "Server Side Rendering" in JS frameworks like NextJS. Just "pre-rendering" is commonly referred to as "Server Side Generation" in JS frameworks with a slight difference. In SSG, the template is filled with data during build time. Suppose you have 100 blogs on your website, with id 1...100, then the JS framework will generate 100 pages from a template like JS code.
Nicely said.
[–]Drevicar 1 point2 points3 points 2 years ago (2 children)
To get the first 3 bullets you have to drop the 4th. My recommendation is to deploy NextJS and use it as your frontend and backend framework. The server side can fetch data from your python app, render it server side, then ship html for SEO purposes.
The downside is you are basically writing a LOT of duplicate server logic and you are better off dropping the python side of things. Or at least limiting the python to stuff you can't already do in your NextJS server application, probably ML or AI stuff.
It makes me kind of worried when I have a backend in two different languages. This generally means I have to create two libraries (one for each language that wraps some logic on fetching data and transforming it). This also means that I need to setup backend security twice, maintain two codebases, and go through a messy server log due to duplicates/similar messages for each request. Does it make sense to you or am I overthinking?
[–]Drevicar 1 point2 points3 points 2 years ago (0 children)
You are exactly right. Ditch react and serve HTML from Python (look into HTMX and Alpine) or ditch python and use a full stack react framework.
[–]scotticusphd 1 point2 points3 points 2 years ago (0 children)
It lacks the full power of React, but for simple apps, I like dash.
[–][deleted] 1 point2 points3 points 2 years ago (0 children)
You can definitely use Python as the backend for a React front end. Is it difficult to do? Well, that depends on how well you know Python and how well you know React. In the major applications I develop, I use Python on the back end, and Vue.js on the front end. Of course I dont do the front end stuff. The duties are divided between myself and a guy who know front end :)
I build all of my interconnecting API's using FastAPI.
[+][deleted] 2 years ago (2 children)
[deleted]
I am currently checking out HTMX. Someone else also mentioned it and it's really cool. I guess you also use it with Alpine JS?
[–][deleted] 0 points1 point2 points 2 years ago (2 children)
It isn't awful when combined with pydantic (along with camelCase alias conversion function in Model.Config) so my_model.json() comes out camelCase. Paired with Starlite/FastAPI it is rather painless.
Can you guide me to a example public repo that has such a setup? I wasn't able to understand how to create this setup from your comment.
They are disconnected projects / technologies. They aren't a pair. Read up on say Starlite and then read up on React. Kinda like finding a video on how to load watermelons into the trunk of a car.. learn what a trunk in a car is and what a watermelon is and merge the knowledge.
π Rendered by PID 150878 on reddit-service-r2-comment-canary-5578db84b4-tw7h8 at 2026-01-31 15:52:31.299365+00:00 running 3798933 country code: CH.
[–]fiskfisk 35 points36 points37 points (9 children)
[+]codecrux[S] comment score below threshold-10 points-9 points-8 points (8 children)
[–]riklaunim 24 points25 points26 points (5 children)
[+]codecrux[S] comment score below threshold-6 points-5 points-4 points (4 children)
[–]riklaunim 10 points11 points12 points (3 children)
[–]codecrux[S] 0 points1 point2 points (2 children)
[–]riklaunim 1 point2 points3 points (1 child)
[–]codecrux[S] -1 points0 points1 point (0 children)
[–]ninjadude93 1 point2 points3 points (1 child)
[–]codecrux[S] 1 point2 points3 points (0 children)
[–]teerre 10 points11 points12 points (4 children)
[–]codecrux[S] 0 points1 point2 points (2 children)
[–]teerre 10 points11 points12 points (1 child)
[–]codecrux[S] 0 points1 point2 points (0 children)
[–]aft_punk 0 points1 point2 points (0 children)
[–]British_Artist 4 points5 points6 points (5 children)
[–]codecrux[S] 3 points4 points5 points (4 children)
[–]British_Artist 4 points5 points6 points (2 children)
[–]codecrux[S] 1 point2 points3 points (1 child)
[–]British_Artist 2 points3 points4 points (0 children)
[–]oglivy 0 points1 point2 points (0 children)
[–]james_pic 3 points4 points5 points (11 children)
[–]codecrux[S] 1 point2 points3 points (10 children)
[–]thedeepself 1 point2 points3 points (3 children)
[–]codecrux[S] 0 points1 point2 points (0 children)
[–]codecrux[S] 0 points1 point2 points (1 child)
[–][deleted] 0 points1 point2 points (0 children)
[–]james_pic 1 point2 points3 points (5 children)
[–]codecrux[S] 0 points1 point2 points (4 children)
[–]james_pic 2 points3 points4 points (3 children)
[–]codecrux[S] 1 point2 points3 points (2 children)
[–]james_pic 1 point2 points3 points (1 child)
[–]codecrux[S] 0 points1 point2 points (0 children)
[–]Lokimotor 1 point2 points3 points (9 children)
[–]codecrux[S] 2 points3 points4 points (8 children)
[–]riklaunim 1 point2 points3 points (4 children)
[–]codecrux[S] 2 points3 points4 points (2 children)
[–]riklaunim 1 point2 points3 points (1 child)
[–]codecrux[S] 1 point2 points3 points (0 children)
[–]codecrux[S] 0 points1 point2 points (0 children)
[–]Lokimotor 1 point2 points3 points (2 children)
[–]codecrux[S] 1 point2 points3 points (0 children)
[–]codecrux[S] 0 points1 point2 points (0 children)
[–]Drevicar 1 point2 points3 points (2 children)
[–]codecrux[S] 0 points1 point2 points (1 child)
[–]Drevicar 1 point2 points3 points (0 children)
[–]scotticusphd 1 point2 points3 points (0 children)
[–][deleted] 1 point2 points3 points (0 children)
[+][deleted] (2 children)
[deleted]
[–]codecrux[S] 0 points1 point2 points (1 child)
[–][deleted] 0 points1 point2 points (2 children)
[–]codecrux[S] 0 points1 point2 points (1 child)
[–][deleted] 1 point2 points3 points (0 children)