Learn by reading
Clean, heavily commented Python that explains each step.
Encode and decode
Shift text either way with any key value.
Handles edge cases
Wrap-around beyond 26 and non-letter characters pass through.
A perfect first project
Ideal introduction to how ciphers work.
Modify freely
The complete source is yours to study and change.