The ULX3S is great! I built myself an early prototype a year ago, and have used it every so often for occasional hacks. It has since evolved to be a first-class citizen in a number of projects and frameworks (LiteX, including LiteDRAM), which makes it great to get started with.
Also worth noting, that you can use a fully open source flow (Yoys + nextpnr + prjtrellis) for this FPGA family. Here's a repository I made that shows a basic blinky for an ULX3S: https://github.com/q3k/ulx3s-foss-blinky/