Choosing CAN BUS components for my project

Hi! I'm working on this project that consists of creating a digital display for a car. i'm using arduino uno as my main board and as for the car hacking part and the CAN communication between the arduino and the car i have the MCP2515 SPI module CAN BUS. And I'm not really sure if the MCP2515 controller is enough or i need a whole CAN BUS shield ( MCP 2515 Controller + MCP2551 CAN transceiver). because i'm not sending anything to the cars ecu, i'm just recieving data .
ps: i'm using this library GitHub - PowerBroker2/ELMduino: Arduino OBD-II Bluetooth Scanner Interface Library for Car Hacking Projects as my source code for the project

Some Arduino's (like the Uno R4 Minima) have a CAN controller built in and only need a transceiver.
But for most you need both a CAN controller AND a transceiver

you mean as seperate (CAN controller and a transciever) components or together as a CAN BUS SHIELD

Either way as long as both are present.

That should work just fine. It will work with about any of the Arduinos however if this is going to be part of the car the hard work is still ahead of you as most of the Arduinos were not designed for either industrial or automotive use.

Arduinos were designed for and are are intended for experimentation and learning, often with breadboards and loose wires that eventually break if vibrated. Most important, the boards are not protected against harsh, dirty or electrically noisy environments found in industrial, automotive and other commercial applications. It is unreliable as it is not suitable for industrial, automotive and other commercial operation.

There is many good app notes such as AN2689 by ST on automotive electronics. reading it will help you a lot. https://www.st.com/resource/en/application_note/cd00181783-protection-of-automotive-electronics-from-electrical-hazards-guidelines-for-design-and-component-selection-stmicroelectronics.pdf
Also take a look at these: Distilled Automotive Electronics Design | Analog Devices and
Transient Voltage Suppression in Automotive Applications
AEC-100 https://media.monolithicpower.com/mps_cms_document/w/e/Webinar_-_Fundamentals_of_AEC-

I really appreciate your post, however, this project will be just a prototype as it's for my final year project as a student and as long as it works i'm happy, maybe someday if i'm working on a more serious and sustainable project your post will come in handy.

That is a great project. You may also look at Gary Fowler's mcp_can library, It has a very simple receive module in it. I have been using that library for a few years with great results.

yeah i checked it out recently and it seems really helpful, although i can't quite wrap my head around something. it's about the communication between the car and the arduino, my supervisor said that i need to work with the ELM327 that is an OBDII port, but then he tells me that i need a shield for my arduino board. but according to what i read online and to my knowledge those are two different ways of communication, it's like the CAN shield is a replacement of the ELM327. could you clarify this for me and correct me if i'm wrong.

I will take a SWAG and say he wants you to use the ELM327 to control the "engine" so you can read the output. The prof probably knows what the results are. I would get one of the ELM327s from the school as well as the manual.

To help CAN is a communications protocol, it is well defined and very robust. A CAN shield is basically the same as a CAN module only on a different PCB layout. They both run with the same software and communicate the same on the bus.