= Programmer manual

Very little of the OpenCPN internals is documented, the docs here are
just some sporadic notes on various spots in the code.
This makes this manual to a Work In progress in the true sense.

////
The nav.adoc is duplicated here to handle #4537. The root cause is that
on narrow screens the top-left index symbol does not expand to the
nav.adoc contents as it should, the duplicated index here is just
a work around.
////

[%hardbreaks]
== Contents
=== Compiling
==== xref:cmake.adoc[- CMake]
==== xref:android.adoc[- Android]
==== xref:linux.adoc[- Linux]
==== xref:linux.adoc#_flatpak[- Flatpak]
==== xref:windows.adoc[- Windows]
==== xref:mac-osx.adoc[- MacOS]
==== xref:docker.adoc[- Docker container]
==== xref:create-deb-package.adoc[- Create Debian packages]

=== xref:unit-tests.adoc[Unit tests]
=== xref:rest-interface.adoc[REST server]
=== xref:plugin-api.adoc[Plugin API]
=== xref:odraw-messaging.adoc[ODraw Messaging API]
=== xref:plugin-messaging.adoc[New Message Plugin API]
=== xref:messaging-debug.adoc[Data Monitor concepts]
=== xref:gui-model.adoc[Model - Gui code organization]
=== xref:comm-overview.adoc[Communication Overview]
=== xref:coding-guidelines.adoc[Coding Guidelines]
=== xref:user-interface-styling.adoc[User Interface Styling]
=== xref:troubleshooting.adoc[Troubleshooting]
=== xref:stacktrace.adoc[Creating a stack trace]
