My first experience with civiche was probably when I was in high school. We had a lot of salmon from a fishing trip in Alaska and my dad and I had taken some out to thaw so that we could eat it for dinner that night. He asked me how we should cook it and I didn't have an answer so we decided not to cook it and my dad threw some lemon juice on it and we ate it just like that. I had no idea what that was actually called and I never encountered ceviche again until recently when I've found myself living with a Peruvian.
The recipe I've written below is based off of a video I watched that was by a famous Peruvian chef teaching how he makes it, his philosophy on ceviche is to take things away rather than add, the ingredients listed below represent the bare minimum you need but of course many things such as cilantro, peppers, tomato, garlic, ginger, other citrus juices, and plenty of other fruits and vegetables can be added if you want, there is really no correct ingredient list, it all depends on your experimentation and preference. However, as with all dishes, fresh ingredients are preferred.
While ceviche is of course not cooked with heat as we would most things it is important to realize that it is also not the same as eating raw fish. The point of cooking is to kill off any bacteria in the meat, fresh meat will of course not have deadly bacteria and this is why we can eat raw things but again ceviche is not raw. Citrus juice is highly acidic so by soaking seafood in it all of the bacteria is killed because they cannot survive in an environment.