The best way to learn a new language or a new framework is to create small (or not so small) projects that force you to get your hands dirty... that's why, over the years I've been taking advantage of my free time to start with small ideas!
This is the last project I've been working on, and maybe the one I've spent more time on. I have never found an application that I really liked to record my workouts or my diets and track them... so without knowing anything about mobile development I embarked on the idea of creating my own app.
For the front end I use React Native + Expo
, along with several well-known libraries like React React Query
or Jotai
. For styling I decided to try @restyle
from Shopify
. Animations and gesture management with Reanimated v3 and Gesture Handler. And a string of Expo and React Native Navigation libraries, such as Expo Router.
It would be very difficult to maintain a front and back end by myself. Therefore, for the second part I decided to go for an all-in-one solution. The most common one is Firebase, however, I wanted to try some alternatives. Therefore, I decided to use Supabase
! PostgreSQL fits very well with the application and the rest of the tools supabase offers allows to have everything in the same service.
Note: it is still quite in early development...
Some time ago, I made a first version of this website. Then I chose to make it using NextJS12
. For component design I used ChakraUI and for animations I used Framer Motion. The image that accompanies this section is a screenshot of how that version looked.
However, this version has been made with SvelteKit
! I had been hearing about Svelte for a while and it was a good excuse to learn how to use it. For styling, I used TailwindCSS and as a component library melt-ui. Finally, it has support for different locales: English and Spanish.
TweeSent consists on making a website where the user could do sentiment analysis on Twitter. Keywords or the user's name are entered in the search box. Tweets are ranked according to whether they are negative, positive or neutral.
For the backend, fastAPI
is used. Once the HTTP request is received, the query for Twitter, now X, is built with tweepy (well, it was until Twitter decided to close its API...) and some text preprocessing is done to make the input to the model as clean as possible. Finally, using ONNX, the Machine Learning model (based on BERT) is run to obtain the predictions.
The project to train the models consists of a graphical interface using Streamlit
. The user selects the model to be used, the dataset to be based on and the task to be performed (fine-tunning, testing or inference). For Machine Learning, PyTorch Lightning
is used, where the metrics, the supported models and functions that were invoked from the UI in Streamlit are defined.
Finally, the frontend has two versions. The first one was done with VueJS 3
, Typescript and Bootstrap. However, in order to have a chance to go a bit deeper into React, I made a second version using TS, Vite and TailwindCSS.
The name says it all about the project... it was an idea that came up with several close friends. And a very good opportunity to deep dive into Python and the world of statistics, numerical methods and artificial intelligence!
The project consists of a stock analysis tool for different time horizons. Using libraries such as Pandas
to manage the dataframes and NumPy
to program the different algorithms and technical indicators used in trading...
Using the CLI, the user could enter the name of the stock. PyStock fetched data from the Alpha Vantage API and backtested the chosen strategy. The strategy had to be programmed in Python (inside the strategies folder in the repo) and we developed a large number of technical indicators, candlestick algorithms and versions running simple ML models.