Palmy Investing
Confident Investing Starts with Deeper Insight
At the moment, I am building Palmy Investing (SaaS) and prototyping a stealth idea.
Hi everyone, I’ve spent the past year building a platform for neutral, data-driven public company research, and I’d love to share some of the technical choices and things I’ve learned along the way. By "neutral approach," I mean the platform avoids investment advice and focuses solely on aggregating financial data — there’s no room for “buy x and you make guaranteed profits” or similar claims.
The platform gets used by investors who try to find undervalued stocks. Today, I want to share a bit of the technical background and hope you like it — otherwise, I’m here to read your roast.
I am using Django as my web framework (hard learning curve, but worth it) with PostgreSQL as the relational heart of my project. Django-allauth is there to authenticate your account — I really recommend it. It’s somewhat tricky to set up, but once configured, it's flexible enough to support various auth providers (I kept things simple for now and have been happy with: Google + normal signup). Then you can easily integrate Mailjet or SendGrid into these authentication workflows (Mailjet is pretty good, I’d say!)
If you visit the platform, you may recognize a very simple — maybe clinical — design. That’s because I had to admit that I’m not a good designer, so I opted for a clean, minimal layout to avoid clutter.
My choice for the frontend was Jinja (within Django), Tailwind, and some vanilla CSS. For visualizations, I strongly recommend you work with ECharts, or if you have a project related to stocks — checkout tradingview‘s JS libary. There are indeed tons of other JS libraries I used over time, e.g., for PDF generation, but one other thing I need to give a shoutout to here is htmx — literally a game changer for me to communicate fast and easy between front- and backend.
For caching operations, I decided on Redis (very easy setup via Django).
To ensure that my stock data is current, I’ve implemented Celery along with Celery Beat. I am using Redis to as the message broker, but am eager to try out RabbitMQ for my next project — but this one does not require priority queues, and I had Redis on board already, so I stuck with it.
The datasets I work with are listed inside the FAQ. To sum it up real quick: I use a mix of open government data (easy to get, hard to organize at scale) and paid APIs (e.g., for the exchange-related information, which adds up very fast to $$$$).
Lately, I’ve been thinking about how to integrate LLMs in a way my users benefit from. So I’ve created a schema that allows LLMs to analyze earnings call transcripts. Currently, there are already 500 reports generated by DeepSeek R1 and GPT-4 (no sign-up required example — for Microsoft).
Apologies if some descriptions lack polish — this is the only thing I’ve made so far. I hope that I can write more precise/formal descriptions once I’ve finished my CS bachelor :)
Also: I know the platform isn’t fully responsive yet. Several mobile issues were reported — that’s what I’m currently working on.
This post is more focused on my tech stack/experience, but here are some major features I’ve built based on the journey above:
Thanks for reading it, hope it helps someone. Please let me know, if you have any questions or feedback :)