St. John is awesome. There are resorts, but they don't have good beaches. Would recommend renting a villa with a pool. You will need a Jeep for exploring the amazing beaches. In terms of location, we prefer to stay near Cruz Bay for easier access to restaurants and other amenities. Coral Bay has some really nice villas but it's a bit of drive on very hilly and winding roads.
As far as beaches, Maho used to be great, but they commercialized it after the hurricane. Now you can get food and drinks there but it sort of ruined the vibe. Hawksnest is our favorite but there are no food/beverage options so you have to pack your own. Trunk Bay is great also, but can get a little crowded, particularly on days when cruise ships dock in St. Thomas. There are many other terrific beaches. If you want a break from beaches and snorkeling, Ram Head is a pretty neat hike.
If you can, do an day charter to White Bay and the Soggy Dollar. There is also a ferry, but it's slow. With a charter, you can add in some other stops as well. Other cool things to consider doing in BVI are the Willey T, The Caves, The Indians and The Baths for a few. The Baths are cool, but a long boat ride so I don't think it's worth it.
You can take the passenger ferry over and rent a Jeep on St. John or rent one on St. Thomas and take the car ferry over. We've done both and I prefer the latter.
Agree with the above restaurant recommendations. Extra Virgin Bistro was probably my favorite. I'd also add Lime Out, Skinny Legs and Miss Lucy's are a few others that come to mind.
https://limeoutvi.com/Probably more info than you wanted, but there are so many things to do there. If you have any questions, feel free to PM me if you'd like.