Hi @John41234
The key lesson I learnt from designing Arduino based custom boards, is that the further your board diverges from the Arduino design upon which it's based, the more work you have to do in terms creating the support environment around it.
I'd suggest first deciding upon the need or goal that custom board is trying fulfill, then look for a Arduino based board that can meet this requirement, in terms of microcontroller speed, memory, IO, etc... Take time to look at the board's schematic diagram and the microcontroller's datasheet, especially for any board design considerations.
If your custom board closely matches the one on which it's based, it's possible to simply use that board's bootloader and core code without any modification. This way you'll also benefit from any core code updates from the company manufacturing and supporting it.
If not then you have to start modifying an existing bootloader, then fork the core code and create a new entry for your board in the Arduino IDE. A while back I created a guide to create a new board entry in the Arduino IDE, it's a bit out-of-date, but gives you an idea of what it entails: https://forum.arduino.cc/t/adding-custom-zero-based-boards-to-the-arduino-ide/394499.
If you manage to get your SAMD21E based custom board's bootloader going, a good board to select in the Arduino IDE would be something like the Adafruit Trinket M0 or Adafruit Qt Py.
I won't bore you with the sorry saga, but if it's any consolation my first custom boards took a lot longer than 5 days to get working.