added the rpc streamline
diff --git a/gsoc2022/smilesdb/rpc_handler/calc_info_pb2.py b/gsoc2022/smilesdb/rpc_handler/calc_info_pb2.py
new file mode 100644
index 0000000..892bcfd
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/calc_info_pb2.py
@@ -0,0 +1,137 @@
+# -*- coding: utf-8 -*-
+# Generated by the protocol buffer compiler.  DO NOT EDIT!
+# source: calc_info.proto
+"""Generated protocol buffer code."""
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import descriptor_pool as _descriptor_pool
+from google.protobuf import message as _message
+from google.protobuf import reflection as _reflection
+from google.protobuf import symbol_database as _symbol_database
+# @@protoc_insertion_point(imports)
+
+_sym_db = _symbol_database.Default()
+
+
+
+
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0f\x63\x61lc_info.proto\x12\x08\x63\x61lcInfo\"\x8a\x01\n\x08\x43\x61lcInfo\x12\x13\n\x0b\x63\x61lcinfo_id\x18\x01 \x01(\t\x12\x0e\n\x06smiles\x18\x02 \x01(\t\x12\x0e\n\x06nbasis\x18\x03 \x01(\x03\x12\x0b\n\x03nmo\x18\x04 \x01(\x03\x12\x0e\n\x06nalpha\x18\x05 \x01(\x03\x12\r\n\x05nbeta\x18\x06 \x01(\x03\x12\r\n\x05natom\x18\x07 \x01(\x03\x12\x0e\n\x06\x65nergy\x18\x08 \x01(\x01\"9\n\x11\x43reateInfoRequest\x12$\n\x08\x63\x61lcInfo\x18\x01 \x01(\x0b\x32\x12.calcInfo.CalcInfo\":\n\x12\x43reateInfoResponse\x12$\n\x08\x63\x61lcInfo\x18\x01 \x01(\x0b\x32\x12.calcInfo.CalcInfo\"\x1d\n\x0fReadInfoRequest\x12\n\n\x02id\x18\x01 \x01(\t\"8\n\x10ReadInfoResponse\x12$\n\x08\x63\x61lcInfo\x18\x01 \x01(\x0b\x32\x12.calcInfo.CalcInfo\"9\n\x11UpdateInfoRequest\x12$\n\x08\x63\x61lcInfo\x18\x01 \x01(\x0b\x32\x12.calcInfo.CalcInfo\":\n\x12UpdateInfoResponse\x12$\n\x08\x63\x61lcInfo\x18\x01 \x01(\x0b\x32\x12.calcInfo.CalcInfo\"(\n\x11\x44\x65leteInfoRequest\x12\x13\n\x0b\x63\x61lcInfo_id\x18\x01 \x01(\t\")\n\x12\x44\x65leteInfoResponse\x12\x13\n\x0b\x63\x61lcInfo_id\x18\x01 \x01(\t\"\x11\n\x0fListInfoRequest\"8\n\x10ListInfoResponse\x12$\n\x08\x63\x61lcInfo\x18\x01 \x01(\x0b\x32\x12.calcInfo.CalcInfo2\x92\x03\n\x0f\x43\x61lcInfoService\x12M\n\x0e\x43reateCalcinfo\x12\x1b.calcInfo.CreateInfoRequest\x1a\x1c.calcInfo.CreateInfoResponse\"\x00\x12G\n\x0cReadCalcInfo\x12\x19.calcInfo.ReadInfoRequest\x1a\x1a.calcInfo.ReadInfoResponse\"\x00\x12M\n\x0eUpdateCalcInfo\x12\x1b.calcInfo.UpdateInfoRequest\x1a\x1c.calcInfo.UpdateInfoResponse\"\x00\x12M\n\x0e\x44\x65leteCalcInfo\x12\x1b.calcInfo.DeleteInfoRequest\x1a\x1c.calcInfo.DeleteInfoResponse\"\x00\x12I\n\x0cListCalcInfo\x12\x19.calcInfo.ListInfoRequest\x1a\x1a.calcInfo.ListInfoResponse\"\x00\x30\x01\x62\x06proto3')
+
+
+
+_CALCINFO = DESCRIPTOR.message_types_by_name['CalcInfo']
+_CREATEINFOREQUEST = DESCRIPTOR.message_types_by_name['CreateInfoRequest']
+_CREATEINFORESPONSE = DESCRIPTOR.message_types_by_name['CreateInfoResponse']
+_READINFOREQUEST = DESCRIPTOR.message_types_by_name['ReadInfoRequest']
+_READINFORESPONSE = DESCRIPTOR.message_types_by_name['ReadInfoResponse']
+_UPDATEINFOREQUEST = DESCRIPTOR.message_types_by_name['UpdateInfoRequest']
+_UPDATEINFORESPONSE = DESCRIPTOR.message_types_by_name['UpdateInfoResponse']
+_DELETEINFOREQUEST = DESCRIPTOR.message_types_by_name['DeleteInfoRequest']
+_DELETEINFORESPONSE = DESCRIPTOR.message_types_by_name['DeleteInfoResponse']
+_LISTINFOREQUEST = DESCRIPTOR.message_types_by_name['ListInfoRequest']
+_LISTINFORESPONSE = DESCRIPTOR.message_types_by_name['ListInfoResponse']
+CalcInfo = _reflection.GeneratedProtocolMessageType('CalcInfo', (_message.Message,), {
+  'DESCRIPTOR' : _CALCINFO,
+  '__module__' : 'calc_info_pb2'
+  # @@protoc_insertion_point(class_scope:calcInfo.CalcInfo)
+  })
+_sym_db.RegisterMessage(CalcInfo)
+
+CreateInfoRequest = _reflection.GeneratedProtocolMessageType('CreateInfoRequest', (_message.Message,), {
+  'DESCRIPTOR' : _CREATEINFOREQUEST,
+  '__module__' : 'calc_info_pb2'
+  # @@protoc_insertion_point(class_scope:calcInfo.CreateInfoRequest)
+  })
+_sym_db.RegisterMessage(CreateInfoRequest)
+
+CreateInfoResponse = _reflection.GeneratedProtocolMessageType('CreateInfoResponse', (_message.Message,), {
+  'DESCRIPTOR' : _CREATEINFORESPONSE,
+  '__module__' : 'calc_info_pb2'
+  # @@protoc_insertion_point(class_scope:calcInfo.CreateInfoResponse)
+  })
+_sym_db.RegisterMessage(CreateInfoResponse)
+
+ReadInfoRequest = _reflection.GeneratedProtocolMessageType('ReadInfoRequest', (_message.Message,), {
+  'DESCRIPTOR' : _READINFOREQUEST,
+  '__module__' : 'calc_info_pb2'
+  # @@protoc_insertion_point(class_scope:calcInfo.ReadInfoRequest)
+  })
+_sym_db.RegisterMessage(ReadInfoRequest)
+
+ReadInfoResponse = _reflection.GeneratedProtocolMessageType('ReadInfoResponse', (_message.Message,), {
+  'DESCRIPTOR' : _READINFORESPONSE,
+  '__module__' : 'calc_info_pb2'
+  # @@protoc_insertion_point(class_scope:calcInfo.ReadInfoResponse)
+  })
+_sym_db.RegisterMessage(ReadInfoResponse)
+
+UpdateInfoRequest = _reflection.GeneratedProtocolMessageType('UpdateInfoRequest', (_message.Message,), {
+  'DESCRIPTOR' : _UPDATEINFOREQUEST,
+  '__module__' : 'calc_info_pb2'
+  # @@protoc_insertion_point(class_scope:calcInfo.UpdateInfoRequest)
+  })
+_sym_db.RegisterMessage(UpdateInfoRequest)
+
+UpdateInfoResponse = _reflection.GeneratedProtocolMessageType('UpdateInfoResponse', (_message.Message,), {
+  'DESCRIPTOR' : _UPDATEINFORESPONSE,
+  '__module__' : 'calc_info_pb2'
+  # @@protoc_insertion_point(class_scope:calcInfo.UpdateInfoResponse)
+  })
+_sym_db.RegisterMessage(UpdateInfoResponse)
+
+DeleteInfoRequest = _reflection.GeneratedProtocolMessageType('DeleteInfoRequest', (_message.Message,), {
+  'DESCRIPTOR' : _DELETEINFOREQUEST,
+  '__module__' : 'calc_info_pb2'
+  # @@protoc_insertion_point(class_scope:calcInfo.DeleteInfoRequest)
+  })
+_sym_db.RegisterMessage(DeleteInfoRequest)
+
+DeleteInfoResponse = _reflection.GeneratedProtocolMessageType('DeleteInfoResponse', (_message.Message,), {
+  'DESCRIPTOR' : _DELETEINFORESPONSE,
+  '__module__' : 'calc_info_pb2'
+  # @@protoc_insertion_point(class_scope:calcInfo.DeleteInfoResponse)
+  })
+_sym_db.RegisterMessage(DeleteInfoResponse)
+
+ListInfoRequest = _reflection.GeneratedProtocolMessageType('ListInfoRequest', (_message.Message,), {
+  'DESCRIPTOR' : _LISTINFOREQUEST,
+  '__module__' : 'calc_info_pb2'
+  # @@protoc_insertion_point(class_scope:calcInfo.ListInfoRequest)
+  })
+_sym_db.RegisterMessage(ListInfoRequest)
+
+ListInfoResponse = _reflection.GeneratedProtocolMessageType('ListInfoResponse', (_message.Message,), {
+  'DESCRIPTOR' : _LISTINFORESPONSE,
+  '__module__' : 'calc_info_pb2'
+  # @@protoc_insertion_point(class_scope:calcInfo.ListInfoResponse)
+  })
+_sym_db.RegisterMessage(ListInfoResponse)
+
+_CALCINFOSERVICE = DESCRIPTOR.services_by_name['CalcInfoService']
+if _descriptor._USE_C_DESCRIPTORS == False:
+
+  DESCRIPTOR._options = None
+  _CALCINFO._serialized_start=30
+  _CALCINFO._serialized_end=168
+  _CREATEINFOREQUEST._serialized_start=170
+  _CREATEINFOREQUEST._serialized_end=227
+  _CREATEINFORESPONSE._serialized_start=229
+  _CREATEINFORESPONSE._serialized_end=287
+  _READINFOREQUEST._serialized_start=289
+  _READINFOREQUEST._serialized_end=318
+  _READINFORESPONSE._serialized_start=320
+  _READINFORESPONSE._serialized_end=376
+  _UPDATEINFOREQUEST._serialized_start=378
+  _UPDATEINFOREQUEST._serialized_end=435
+  _UPDATEINFORESPONSE._serialized_start=437
+  _UPDATEINFORESPONSE._serialized_end=495
+  _DELETEINFOREQUEST._serialized_start=497
+  _DELETEINFOREQUEST._serialized_end=537
+  _DELETEINFORESPONSE._serialized_start=539
+  _DELETEINFORESPONSE._serialized_end=580
+  _LISTINFOREQUEST._serialized_start=582
+  _LISTINFOREQUEST._serialized_end=599
+  _LISTINFORESPONSE._serialized_start=601
+  _LISTINFORESPONSE._serialized_end=657
+  _CALCINFOSERVICE._serialized_start=660
+  _CALCINFOSERVICE._serialized_end=1062
+# @@protoc_insertion_point(module_scope)
diff --git a/gsoc2022/smilesdb/rpc_handler/calc_info_pb2_grpc.py b/gsoc2022/smilesdb/rpc_handler/calc_info_pb2_grpc.py
new file mode 100644
index 0000000..8d9dfc6
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/calc_info_pb2_grpc.py
@@ -0,0 +1,198 @@
+# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
+"""Client and server classes corresponding to protobuf-defined services."""
+import grpc
+
+import calc_info_pb2 as calc__info__pb2
+
+
+class CalcInfoServiceStub(object):
+    """Missing associated documentation comment in .proto file."""
+
+    def __init__(self, channel):
+        """Constructor.
+
+        Args:
+            channel: A grpc.Channel.
+        """
+        self.CreateCalcinfo = channel.unary_unary(
+                '/calcInfo.CalcInfoService/CreateCalcinfo',
+                request_serializer=calc__info__pb2.CreateInfoRequest.SerializeToString,
+                response_deserializer=calc__info__pb2.CreateInfoResponse.FromString,
+                )
+        self.ReadCalcInfo = channel.unary_unary(
+                '/calcInfo.CalcInfoService/ReadCalcInfo',
+                request_serializer=calc__info__pb2.ReadInfoRequest.SerializeToString,
+                response_deserializer=calc__info__pb2.ReadInfoResponse.FromString,
+                )
+        self.UpdateCalcInfo = channel.unary_unary(
+                '/calcInfo.CalcInfoService/UpdateCalcInfo',
+                request_serializer=calc__info__pb2.UpdateInfoRequest.SerializeToString,
+                response_deserializer=calc__info__pb2.UpdateInfoResponse.FromString,
+                )
+        self.DeleteCalcInfo = channel.unary_unary(
+                '/calcInfo.CalcInfoService/DeleteCalcInfo',
+                request_serializer=calc__info__pb2.DeleteInfoRequest.SerializeToString,
+                response_deserializer=calc__info__pb2.DeleteInfoResponse.FromString,
+                )
+        self.ListCalcInfo = channel.unary_stream(
+                '/calcInfo.CalcInfoService/ListCalcInfo',
+                request_serializer=calc__info__pb2.ListInfoRequest.SerializeToString,
+                response_deserializer=calc__info__pb2.ListInfoResponse.FromString,
+                )
+
+
+class CalcInfoServiceServicer(object):
+    """Missing associated documentation comment in .proto file."""
+
+    def CreateCalcinfo(self, request, context):
+        """Missing associated documentation comment in .proto file."""
+        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+        context.set_details('Method not implemented!')
+        raise NotImplementedError('Method not implemented!')
+
+    def ReadCalcInfo(self, request, context):
+        """Missing associated documentation comment in .proto file."""
+        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+        context.set_details('Method not implemented!')
+        raise NotImplementedError('Method not implemented!')
+
+    def UpdateCalcInfo(self, request, context):
+        """Missing associated documentation comment in .proto file."""
+        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+        context.set_details('Method not implemented!')
+        raise NotImplementedError('Method not implemented!')
+
+    def DeleteCalcInfo(self, request, context):
+        """Missing associated documentation comment in .proto file."""
+        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+        context.set_details('Method not implemented!')
+        raise NotImplementedError('Method not implemented!')
+
+    def ListCalcInfo(self, request, context):
+        """Missing associated documentation comment in .proto file."""
+        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+        context.set_details('Method not implemented!')
+        raise NotImplementedError('Method not implemented!')
+
+
+def add_CalcInfoServiceServicer_to_server(servicer, server):
+    rpc_method_handlers = {
+            'CreateCalcinfo': grpc.unary_unary_rpc_method_handler(
+                    servicer.CreateCalcinfo,
+                    request_deserializer=calc__info__pb2.CreateInfoRequest.FromString,
+                    response_serializer=calc__info__pb2.CreateInfoResponse.SerializeToString,
+            ),
+            'ReadCalcInfo': grpc.unary_unary_rpc_method_handler(
+                    servicer.ReadCalcInfo,
+                    request_deserializer=calc__info__pb2.ReadInfoRequest.FromString,
+                    response_serializer=calc__info__pb2.ReadInfoResponse.SerializeToString,
+            ),
+            'UpdateCalcInfo': grpc.unary_unary_rpc_method_handler(
+                    servicer.UpdateCalcInfo,
+                    request_deserializer=calc__info__pb2.UpdateInfoRequest.FromString,
+                    response_serializer=calc__info__pb2.UpdateInfoResponse.SerializeToString,
+            ),
+            'DeleteCalcInfo': grpc.unary_unary_rpc_method_handler(
+                    servicer.DeleteCalcInfo,
+                    request_deserializer=calc__info__pb2.DeleteInfoRequest.FromString,
+                    response_serializer=calc__info__pb2.DeleteInfoResponse.SerializeToString,
+            ),
+            'ListCalcInfo': grpc.unary_stream_rpc_method_handler(
+                    servicer.ListCalcInfo,
+                    request_deserializer=calc__info__pb2.ListInfoRequest.FromString,
+                    response_serializer=calc__info__pb2.ListInfoResponse.SerializeToString,
+            ),
+    }
+    generic_handler = grpc.method_handlers_generic_handler(
+            'calcInfo.CalcInfoService', rpc_method_handlers)
+    server.add_generic_rpc_handlers((generic_handler,))
+
+
+ # This class is part of an EXPERIMENTAL API.
+class CalcInfoService(object):
+    """Missing associated documentation comment in .proto file."""
+
+    @staticmethod
+    def CreateCalcinfo(request,
+            target,
+            options=(),
+            channel_credentials=None,
+            call_credentials=None,
+            insecure=False,
+            compression=None,
+            wait_for_ready=None,
+            timeout=None,
+            metadata=None):
+        return grpc.experimental.unary_unary(request, target, '/calcInfo.CalcInfoService/CreateCalcinfo',
+            calc__info__pb2.CreateInfoRequest.SerializeToString,
+            calc__info__pb2.CreateInfoResponse.FromString,
+            options, channel_credentials,
+            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+
+    @staticmethod
+    def ReadCalcInfo(request,
+            target,
+            options=(),
+            channel_credentials=None,
+            call_credentials=None,
+            insecure=False,
+            compression=None,
+            wait_for_ready=None,
+            timeout=None,
+            metadata=None):
+        return grpc.experimental.unary_unary(request, target, '/calcInfo.CalcInfoService/ReadCalcInfo',
+            calc__info__pb2.ReadInfoRequest.SerializeToString,
+            calc__info__pb2.ReadInfoResponse.FromString,
+            options, channel_credentials,
+            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+
+    @staticmethod
+    def UpdateCalcInfo(request,
+            target,
+            options=(),
+            channel_credentials=None,
+            call_credentials=None,
+            insecure=False,
+            compression=None,
+            wait_for_ready=None,
+            timeout=None,
+            metadata=None):
+        return grpc.experimental.unary_unary(request, target, '/calcInfo.CalcInfoService/UpdateCalcInfo',
+            calc__info__pb2.UpdateInfoRequest.SerializeToString,
+            calc__info__pb2.UpdateInfoResponse.FromString,
+            options, channel_credentials,
+            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+
+    @staticmethod
+    def DeleteCalcInfo(request,
+            target,
+            options=(),
+            channel_credentials=None,
+            call_credentials=None,
+            insecure=False,
+            compression=None,
+            wait_for_ready=None,
+            timeout=None,
+            metadata=None):
+        return grpc.experimental.unary_unary(request, target, '/calcInfo.CalcInfoService/DeleteCalcInfo',
+            calc__info__pb2.DeleteInfoRequest.SerializeToString,
+            calc__info__pb2.DeleteInfoResponse.FromString,
+            options, channel_credentials,
+            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+
+    @staticmethod
+    def ListCalcInfo(request,
+            target,
+            options=(),
+            channel_credentials=None,
+            call_credentials=None,
+            insecure=False,
+            compression=None,
+            wait_for_ready=None,
+            timeout=None,
+            metadata=None):
+        return grpc.experimental.unary_stream(request, target, '/calcInfo.CalcInfoService/ListCalcInfo',
+            calc__info__pb2.ListInfoRequest.SerializeToString,
+            calc__info__pb2.ListInfoResponse.FromString,
+            options, channel_credentials,
+            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
diff --git a/gsoc2022/smilesdb/rpc_handler/dataHandler/__init__.py b/gsoc2022/smilesdb/rpc_handler/dataHandler/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/dataHandler/__init__.py
diff --git a/gsoc2022/smilesdb/rpc_handler/dataHandler/__pycache__/__init__.cpython-38.pyc b/gsoc2022/smilesdb/rpc_handler/dataHandler/__pycache__/__init__.cpython-38.pyc
new file mode 100644
index 0000000..31d3aae
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/dataHandler/__pycache__/__init__.cpython-38.pyc
Binary files differ
diff --git a/gsoc2022/smilesdb/rpc_handler/dataHandler/__pycache__/__init__.cpython-39.pyc b/gsoc2022/smilesdb/rpc_handler/dataHandler/__pycache__/__init__.cpython-39.pyc
new file mode 100644
index 0000000..f107629
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/dataHandler/__pycache__/__init__.cpython-39.pyc
Binary files differ
diff --git a/gsoc2022/smilesdb/rpc_handler/dataHandler/__pycache__/admin.cpython-38.pyc b/gsoc2022/smilesdb/rpc_handler/dataHandler/__pycache__/admin.cpython-38.pyc
new file mode 100644
index 0000000..2cab69a
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/dataHandler/__pycache__/admin.cpython-38.pyc
Binary files differ
diff --git a/gsoc2022/smilesdb/rpc_handler/dataHandler/__pycache__/admin.cpython-39.pyc b/gsoc2022/smilesdb/rpc_handler/dataHandler/__pycache__/admin.cpython-39.pyc
new file mode 100644
index 0000000..9e06f56
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/dataHandler/__pycache__/admin.cpython-39.pyc
Binary files differ
diff --git a/gsoc2022/smilesdb/rpc_handler/dataHandler/__pycache__/apps.cpython-38.pyc b/gsoc2022/smilesdb/rpc_handler/dataHandler/__pycache__/apps.cpython-38.pyc
new file mode 100644
index 0000000..3dfc1e4
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/dataHandler/__pycache__/apps.cpython-38.pyc
Binary files differ
diff --git a/gsoc2022/smilesdb/rpc_handler/dataHandler/__pycache__/apps.cpython-39.pyc b/gsoc2022/smilesdb/rpc_handler/dataHandler/__pycache__/apps.cpython-39.pyc
new file mode 100644
index 0000000..4567e62
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/dataHandler/__pycache__/apps.cpython-39.pyc
Binary files differ
diff --git a/gsoc2022/smilesdb/rpc_handler/dataHandler/__pycache__/models.cpython-38.pyc b/gsoc2022/smilesdb/rpc_handler/dataHandler/__pycache__/models.cpython-38.pyc
new file mode 100644
index 0000000..a0f76f8
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/dataHandler/__pycache__/models.cpython-38.pyc
Binary files differ
diff --git a/gsoc2022/smilesdb/rpc_handler/dataHandler/__pycache__/models.cpython-39.pyc b/gsoc2022/smilesdb/rpc_handler/dataHandler/__pycache__/models.cpython-39.pyc
new file mode 100644
index 0000000..1814555
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/dataHandler/__pycache__/models.cpython-39.pyc
Binary files differ
diff --git a/gsoc2022/smilesdb/rpc_handler/dataHandler/__pycache__/urls.cpython-38.pyc b/gsoc2022/smilesdb/rpc_handler/dataHandler/__pycache__/urls.cpython-38.pyc
new file mode 100644
index 0000000..af69a34
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/dataHandler/__pycache__/urls.cpython-38.pyc
Binary files differ
diff --git a/gsoc2022/smilesdb/rpc_handler/dataHandler/__pycache__/urls.cpython-39.pyc b/gsoc2022/smilesdb/rpc_handler/dataHandler/__pycache__/urls.cpython-39.pyc
new file mode 100644
index 0000000..2cf3fcf
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/dataHandler/__pycache__/urls.cpython-39.pyc
Binary files differ
diff --git a/gsoc2022/smilesdb/rpc_handler/dataHandler/__pycache__/views.cpython-38.pyc b/gsoc2022/smilesdb/rpc_handler/dataHandler/__pycache__/views.cpython-38.pyc
new file mode 100644
index 0000000..a595eb7
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/dataHandler/__pycache__/views.cpython-38.pyc
Binary files differ
diff --git a/gsoc2022/smilesdb/rpc_handler/dataHandler/__pycache__/views.cpython-39.pyc b/gsoc2022/smilesdb/rpc_handler/dataHandler/__pycache__/views.cpython-39.pyc
new file mode 100644
index 0000000..c3b154a
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/dataHandler/__pycache__/views.cpython-39.pyc
Binary files differ
diff --git a/gsoc2022/smilesdb/rpc_handler/dataHandler/admin.py b/gsoc2022/smilesdb/rpc_handler/dataHandler/admin.py
new file mode 100644
index 0000000..8c38f3f
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/dataHandler/admin.py
@@ -0,0 +1,3 @@
+from django.contrib import admin
+
+# Register your models here.
diff --git a/gsoc2022/smilesdb/rpc_handler/dataHandler/apps.py b/gsoc2022/smilesdb/rpc_handler/dataHandler/apps.py
new file mode 100644
index 0000000..80d9b1c
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/dataHandler/apps.py
@@ -0,0 +1,6 @@
+from django.apps import AppConfig
+
+
+class DatahandlerConfig(AppConfig):
+    default_auto_field = "django.db.models.BigAutoField"
+    name = "dataHandler"
diff --git a/gsoc2022/smilesdb/rpc_handler/dataHandler/code_gen/__init__.py b/gsoc2022/smilesdb/rpc_handler/dataHandler/code_gen/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/dataHandler/code_gen/__init__.py
diff --git a/gsoc2022/smilesdb/rpc_handler/dataHandler/code_gen/__pycache__/__init__.cpython-39.pyc b/gsoc2022/smilesdb/rpc_handler/dataHandler/code_gen/__pycache__/__init__.cpython-39.pyc
new file mode 100644
index 0000000..4f0fdad
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/dataHandler/code_gen/__pycache__/__init__.cpython-39.pyc
Binary files differ
diff --git a/gsoc2022/smilesdb/rpc_handler/dataHandler/migrations/__init__.py b/gsoc2022/smilesdb/rpc_handler/dataHandler/migrations/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/dataHandler/migrations/__init__.py
diff --git a/gsoc2022/smilesdb/rpc_handler/dataHandler/migrations/__pycache__/__init__.cpython-38.pyc b/gsoc2022/smilesdb/rpc_handler/dataHandler/migrations/__pycache__/__init__.cpython-38.pyc
new file mode 100644
index 0000000..177f38c
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/dataHandler/migrations/__pycache__/__init__.cpython-38.pyc
Binary files differ
diff --git a/gsoc2022/smilesdb/rpc_handler/dataHandler/migrations/__pycache__/__init__.cpython-39.pyc b/gsoc2022/smilesdb/rpc_handler/dataHandler/migrations/__pycache__/__init__.cpython-39.pyc
new file mode 100644
index 0000000..5e274ca
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/dataHandler/migrations/__pycache__/__init__.cpython-39.pyc
Binary files differ
diff --git a/gsoc2022/smilesdb/rpc_handler/dataHandler/models.py b/gsoc2022/smilesdb/rpc_handler/dataHandler/models.py
new file mode 100644
index 0000000..71a8362
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/dataHandler/models.py
@@ -0,0 +1,3 @@
+from django.db import models
+
+# Create your models here.
diff --git a/gsoc2022/smilesdb/rpc_handler/dataHandler/protos/calc_info.proto b/gsoc2022/smilesdb/rpc_handler/dataHandler/protos/calc_info.proto
new file mode 100644
index 0000000..a582e39
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/dataHandler/protos/calc_info.proto
@@ -0,0 +1,73 @@
+syntax = "proto3";
+package calcInfo;
+
+message CalcInfo{
+  // System generated key
+  string calcinfo_id = 1;
+  // Primary key
+  string smiles = 2;
+  //	The number of basis functions for the computation. 	number
+  int64 nbasis = 3;
+  //	The number of molecular orbitals for the computation. 	number
+  int64 nmo = 4;
+  //	The number of alpha electrons in the computation. 	number
+  int64 nalpha = 5;
+  //	The number of beta electrons in the computation. 	number
+  int64 nbeta = 6;
+  //	The number of atoms in the computation. 	number
+  int64 natom = 7;
+  // 	The energy of the requested method, identical to return_value for energy computations. number
+  double energy = 8;
+
+}
+
+message CreateInfoRequest {
+  CalcInfo calcInfo = 1;
+}
+
+message CreateInfoResponse {
+  CalcInfo calcInfo = 1;
+}
+
+message ReadInfoRequest {
+  string id = 1;
+}
+
+message ReadInfoResponse {
+  CalcInfo calcInfo = 1;
+}
+
+message UpdateInfoRequest {
+  CalcInfo calcInfo = 1;
+}
+
+message UpdateInfoResponse {
+  CalcInfo calcInfo = 1;
+}
+
+message DeleteInfoRequest {
+  string calcInfo_id = 1;
+}
+
+message DeleteInfoResponse {
+  string calcInfo_id = 1;
+}
+
+message ListInfoRequest {}
+
+message ListInfoResponse {
+  CalcInfo calcInfo = 1;
+}
+
+
+service CalcInfoService {
+  rpc CreateCalcinfo (CreateInfoRequest) returns (CreateInfoResponse) {};
+  rpc ReadCalcInfo (ReadInfoRequest) returns (ReadInfoResponse) {};
+  rpc UpdateCalcInfo (UpdateInfoRequest) returns (UpdateInfoResponse) {};
+  rpc DeleteCalcInfo (DeleteInfoRequest) returns (DeleteInfoResponse) {};
+  rpc ListCalcInfo (ListInfoRequest) returns (stream ListInfoResponse) {};
+}
+
+
+
+// python -m grpc_tools.protoc --proto_path=./ --python_out=../codegen --grpc_python_out=../codegen ./calc_info.proto
\ No newline at end of file
diff --git a/gsoc2022/smilesdb/rpc_handler/dataHandler/protos/molecule.proto b/gsoc2022/smilesdb/rpc_handler/dataHandler/protos/molecule.proto
new file mode 100644
index 0000000..542afa3
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/dataHandler/protos/molecule.proto
@@ -0,0 +1,116 @@
+syntax="proto3";
+package molecule;
+
+message Molecule {
+  string mol_id = 1;
+  string cas_nr = 2;
+  string smiles = 3;
+  string smiles_stereo = 4;
+  string inchi = 5;
+  string molfile_blob_source = 6;
+  string emp_formula = 7;
+  string emp_formula_sort = 8;
+  string emp_formula_source = 9;
+  double mw = 10;
+  double mw_monoiso = 11;
+  double rdb = 12;
+  string mw_source = 13;
+  string validated_by = 14;
+  string journal = 15;
+  string auth_of_intr = 16;
+  string jour_cit = 17;
+  string year_publ = 18;
+  string doi_link = 19;
+  string comp_class = 20;
+  string cuniq = 21;
+  string calc_perf = 22;
+  string org_met = 23;
+  int64 mol_chrg = 24;
+  string state_ofmat = 25;
+  string color_white = 26;
+  string color_uv = 27;
+  double absorb_max = 28;
+  string solvent_ae = 29;
+  double absorb = 30;
+  double conc = 31;
+  double extinc = 32;
+  double emis_max = 33;
+  double temp_abs = 34;
+  double emis_qy = 35;
+  double temp_ems = 36;
+  double lifetime = 37;
+  double temp_cv = 38;
+  double reduc_pot = 39;
+  string hw_or_pk_rp = 40;
+  double oxid_pot = 41;
+  string hw_or_pk_op = 42;
+  string solvent_cv = 43;
+  string electrolyte = 44;
+  string ref_electrd = 45;
+  string inter_thngs = 46;
+  double density_20 = 47;
+  string density_20_source = 48;
+  double default_warn_level = 49;
+  double n_20 = 50;
+  string n_20_source = 51;
+  double mp_low = 52;
+  double mp_high = 53;
+  string mp_source = 54;
+  double bp_low = 55;
+  double bp_high = 56;
+  double bp_press = 57;
+  string press_unit = 58;
+  string bp_source = 59;
+  string safety_r = 60;
+  string safety_h = 61;
+  string safety_s = 62;
+  string safety_p = 63;
+  string safety_text = 64;
+  string safety_sym = 65;
+  string safety_sym_ghs = 66;
+  string safety_source = 67;
+  string comment_mol = 68;
+}
+
+message CreateMoleculeRequest{
+  Molecule molecule = 1;
+}
+message CreateMoleculeResponse{
+  Molecule molecule = 1;
+}
+
+message ReadMoleculeRequest{
+  string id = 1;
+}
+message ReadMoleculeResponse{
+  Molecule molecule = 1;
+}
+
+message UpdateMoleculeRequest{
+  Molecule molecule = 1;
+}
+message UpdateMoleculeResponse{
+  Molecule molecule = 1;
+}
+
+message DeleteMoleculeRequest{
+  string molecule_id = 1;
+}
+message DeleteMoleculeResponse{
+  string molecule_id = 1;
+}
+
+message ListMoleculeRequest{
+}
+
+message ListMoleculeResponse{
+  Molecule molecule = 1;
+}
+
+service MoleculeService{
+  rpc CreateMolecule(CreateMoleculeRequest) returns (CreateMoleculeResponse){};
+  rpc ReadMolecule(ReadMoleculeRequest) returns (ReadMoleculeResponse){};
+  rpc UpdateMolecule(UpdateMoleculeRequest) returns (UpdateMoleculeResponse){};
+  rpc DeleteMolecule(DeleteMoleculeRequest) returns (DeleteMoleculeResponse){};
+  rpc ListMolecule(ListMoleculeRequest) returns (stream ListMoleculeResponse){};
+}
diff --git a/gsoc2022/smilesdb/rpc_handler/dataHandler/tests.py b/gsoc2022/smilesdb/rpc_handler/dataHandler/tests.py
new file mode 100644
index 0000000..7ce503c
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/dataHandler/tests.py
@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your tests here.
diff --git a/gsoc2022/smilesdb/rpc_handler/dataHandler/urls.py b/gsoc2022/smilesdb/rpc_handler/dataHandler/urls.py
new file mode 100644
index 0000000..902b8e8
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/dataHandler/urls.py
@@ -0,0 +1,7 @@
+from django.urls import path
+
+from . import views
+
+urlpatterns = [
+    path('molecule/', views.client),
+]
diff --git a/gsoc2022/smilesdb/rpc_handler/dataHandler/views.py b/gsoc2022/smilesdb/rpc_handler/dataHandler/views.py
new file mode 100644
index 0000000..57ca079
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/dataHandler/views.py
@@ -0,0 +1,128 @@
+import grpc
+from django.http import JsonResponse, HttpResponse
+from django.views.decorators.csrf import csrf_exempt
+
+import calc_info_pb2_grpc
+import calc_info_pb2
+import molecule_pb2
+import molecule_pb2_grpc
+
+
+# def calcInfoData(channel):
+#     stub = calc_info_pb2_grpc.CalcInfoServiceStub(channel)
+#     rpc_log = stub.ListCalcInfo(calc_info_pb2.ListInfoRequest())
+#     data_log = []
+#     for infoData in rpc_log:
+#         data = {
+#             'calcinfo_id': infoData.calcInfo.calcinfo_id,
+#             'smiles': infoData.calcInfo.smiles,
+#             'nbasis': infoData.calcInfo.nbasis,
+#             'nmo': infoData.calcInfo.nmo,
+#             'nalpha': infoData.calcInfo.nalpha,
+#             'nbeta': infoData.calcInfo.nbeta,
+#             'natom': infoData.calcInfo.natom,
+#             'energy': infoData.calcInfo.energy
+#         }
+#         data_log.append(data)
+#     return data_log
+
+
+# def readCalcInfoData(channel):
+#     stub = calc_info_pb2_grpc.CalcInfoServiceStub(channel)
+#     rpc_log = stub.ReadCalcInfo(calc_info_pb2.ReadInfoRequest(id='630f26040e217430d0ce8f5d'))
+#     return rpc_log
+
+#
+# def readMoleculeData(channel):
+#     stub = molecule_pb2_grpc.MoleculeServiceStub(channel)
+#     rpc_log = stub.ReadMolecule(molecule_pb2.ReadMoleculeRequest(id='631c8b3a263f4bd508d11ef1'))
+#     return rpc_log
+
+
+def ListmoleculeData(channel):
+    stub = molecule_pb2_grpc.MoleculeServiceStub(channel)
+    rpc_log = stub.ListMolecule(molecule_pb2.ListMoleculeRequest())
+    data_log = []
+
+    for molData in rpc_log:
+        data = {
+            'mol_id': molData.molecule.mol_id,
+            'cas_nr': molData.molecule.cas_nr,
+            'smiles': molData.molecule.smiles,
+            'smiles_stereo': molData.molecule.smiles_stereo,
+            'inchi': molData.molecule.inchi,
+            'molfile_blob_source': molData.molecule.molfile_blob_source,
+            'emp_formula': molData.molecule.emp_formula,
+            'emp_formula_sort': molData.molecule.emp_formula_sort,
+            'emp_formula_source': molData.molecule.emp_formula_source,
+            'mw': molData.molecule.mw,
+            'mw_monoiso': molData.molecule.mw_monoiso,
+            'rdb': molData.molecule.rdb,
+            'mw_source': molData.molecule.mw_source,
+            'validated_by': molData.molecule.validated_by,
+            'journal': molData.molecule.journal,
+            'auth_of_intr': molData.molecule.auth_of_intr,
+            'jour_cit': molData.molecule.jour_cit,
+            'year_publ': molData.molecule.year_publ,
+            'doi_link': molData.molecule.doi_link,
+            'comp_class': molData.molecule.comp_class,
+            'cuniq': molData.molecule.cuniq,
+            'calc_perf': molData.molecule.calc_perf,
+            'org_met': molData.molecule.org_met,
+            'mol_chrg': molData.molecule.mol_chrg,
+            'state_ofmat': molData.molecule.state_ofmat,
+            'color_white': molData.molecule.color_white,
+            'color_uv': molData.molecule.color_uv,
+            'absorb_max': molData.molecule.absorb_max,
+            'solvent_ae': molData.molecule.solvent_ae,
+            'absorb': molData.molecule.absorb,
+            'conc': molData.molecule.conc,
+            'extinc': molData.molecule.extinc,
+            'emis_max': molData.molecule.emis_max,
+            'temp_abs': molData.molecule.temp_abs,
+            'emis_qy': molData.molecule.emis_qy,
+            'temp_ems': molData.molecule.temp_ems,
+            'lifetime': molData.molecule.lifetime,
+            'temp_cv': molData.molecule.temp_cv,
+            'reduc_pot': molData.molecule.reduc_pot,
+            'hw_or_pk_rp': molData.molecule.hw_or_pk_rp,
+            'oxid_pot': molData.molecule.oxid_pot,
+            'hw_or_pk_op': molData.molecule.hw_or_pk_op,
+            'solvent_cv': molData.molecule.solvent_cv,
+            'electrolyte': molData.molecule.electrolyte,
+            'ref_electrd': molData.molecule.ref_electrd,
+            'inter_thngs': molData.molecule.inter_thngs,
+            'density_20': molData.molecule.density_20,
+            'density_20_source': molData.molecule.density_20_source,
+            'default_warn_level': molData.molecule.default_warn_level,
+            'n_20': molData.molecule.n_20,
+            'n_20_source': molData.molecule.n_20_source,
+            'mp_low': molData.molecule.mp_low,
+            'mp_high': molData.molecule.mp_high,
+            'mp_source': molData.molecule.mp_source,
+            'bp_low': molData.molecule.bp_low,
+            'bp_high': molData.molecule.bp_high,
+            'bp_press': molData.molecule.bp_press,
+            'press_unit': molData.molecule.press_unit,
+            'bp_source': molData.molecule.bp_source,
+            'safety_r': molData.molecule.safety_r,
+            'safety_h': molData.molecule.safety_h,
+            'safety_s': molData.molecule.safety_s,
+            'safety_p': molData.molecule.safety_p,
+            'safety_text': molData.molecule.safety_text,
+            'safety_sym': molData.molecule.safety_sym,
+            'safety_sym_ghs': molData.molecule.safety_sym_ghs,
+            'safety_source': molData.molecule.safety_source,
+            'comment_mol': molData.molecule.comment_mol,
+        }
+        data_log.append(data)
+    return data_log
+
+@csrf_exempt
+def client(request):
+    if request.method == 'GET':
+        print(request)
+        with grpc.insecure_channel('localhost:50051') as channel:
+            # return JsonResponse(calcInfoData(channel), safe=False)
+            # return HttpResponse(ListmoleculeData(channel))
+            return JsonResponse(ListmoleculeData(channel), safe=False)
diff --git a/gsoc2022/smilesdb/rpc_handler/db.sqlite3 b/gsoc2022/smilesdb/rpc_handler/db.sqlite3
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/db.sqlite3
diff --git a/gsoc2022/smilesdb/rpc_handler/manage.py b/gsoc2022/smilesdb/rpc_handler/manage.py
new file mode 100755
index 0000000..2b8cc72
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/manage.py
@@ -0,0 +1,22 @@
+#!/usr/bin/env python
+"""Django's command-line utility for administrative tasks."""
+import os
+import sys
+
+
+def main():
+    """Run administrative tasks."""
+    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "rpc_handler.settings")
+    try:
+        from django.core.management import execute_from_command_line
+    except ImportError as exc:
+        raise ImportError(
+            "Couldn't import Django. Are you sure it's installed and "
+            "available on your PYTHONPATH environment variable? Did you "
+            "forget to activate a virtual environment?"
+        ) from exc
+    execute_from_command_line(sys.argv)
+
+
+if __name__ == "__main__":
+    main()
diff --git a/gsoc2022/smilesdb/rpc_handler/molecule_pb2.py b/gsoc2022/smilesdb/rpc_handler/molecule_pb2.py
new file mode 100644
index 0000000..1e8d1ba
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/molecule_pb2.py
@@ -0,0 +1,137 @@
+# -*- coding: utf-8 -*-
+# Generated by the protocol buffer compiler.  DO NOT EDIT!
+# source: molecule.proto
+"""Generated protocol buffer code."""
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import descriptor_pool as _descriptor_pool
+from google.protobuf import message as _message
+from google.protobuf import reflection as _reflection
+from google.protobuf import symbol_database as _symbol_database
+# @@protoc_insertion_point(imports)
+
+_sym_db = _symbol_database.Default()
+
+
+
+
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0emolecule.proto\x12\x08molecule\"\xa4\n\n\x08Molecule\x12\x0e\n\x06mol_id\x18\x01 \x01(\t\x12\x0e\n\x06\x63\x61s_nr\x18\x02 \x01(\t\x12\x0e\n\x06smiles\x18\x03 \x01(\t\x12\x15\n\rsmiles_stereo\x18\x04 \x01(\t\x12\r\n\x05inchi\x18\x05 \x01(\t\x12\x1b\n\x13molfile_blob_source\x18\x06 \x01(\t\x12\x13\n\x0b\x65mp_formula\x18\x07 \x01(\t\x12\x18\n\x10\x65mp_formula_sort\x18\x08 \x01(\t\x12\x1a\n\x12\x65mp_formula_source\x18\t \x01(\t\x12\n\n\x02mw\x18\n \x01(\x01\x12\x12\n\nmw_monoiso\x18\x0b \x01(\x01\x12\x0b\n\x03rdb\x18\x0c \x01(\x01\x12\x11\n\tmw_source\x18\r \x01(\t\x12\x14\n\x0cvalidated_by\x18\x0e \x01(\t\x12\x0f\n\x07journal\x18\x0f \x01(\t\x12\x14\n\x0c\x61uth_of_intr\x18\x10 \x01(\t\x12\x10\n\x08jour_cit\x18\x11 \x01(\t\x12\x11\n\tyear_publ\x18\x12 \x01(\t\x12\x10\n\x08\x64oi_link\x18\x13 \x01(\t\x12\x12\n\ncomp_class\x18\x14 \x01(\t\x12\r\n\x05\x63uniq\x18\x15 \x01(\t\x12\x11\n\tcalc_perf\x18\x16 \x01(\t\x12\x0f\n\x07org_met\x18\x17 \x01(\t\x12\x10\n\x08mol_chrg\x18\x18 \x01(\x03\x12\x13\n\x0bstate_ofmat\x18\x19 \x01(\t\x12\x13\n\x0b\x63olor_white\x18\x1a \x01(\t\x12\x10\n\x08\x63olor_uv\x18\x1b \x01(\t\x12\x12\n\nabsorb_max\x18\x1c \x01(\x01\x12\x12\n\nsolvent_ae\x18\x1d \x01(\t\x12\x0e\n\x06\x61\x62sorb\x18\x1e \x01(\x01\x12\x0c\n\x04\x63onc\x18\x1f \x01(\x01\x12\x0e\n\x06\x65xtinc\x18  \x01(\x01\x12\x10\n\x08\x65mis_max\x18! \x01(\x01\x12\x10\n\x08temp_abs\x18\" \x01(\x01\x12\x0f\n\x07\x65mis_qy\x18# \x01(\x01\x12\x10\n\x08temp_ems\x18$ \x01(\x01\x12\x10\n\x08lifetime\x18% \x01(\x01\x12\x0f\n\x07temp_cv\x18& \x01(\x01\x12\x11\n\treduc_pot\x18\' \x01(\x01\x12\x13\n\x0bhw_or_pk_rp\x18( \x01(\t\x12\x10\n\x08oxid_pot\x18) \x01(\x01\x12\x13\n\x0bhw_or_pk_op\x18* \x01(\t\x12\x12\n\nsolvent_cv\x18+ \x01(\t\x12\x13\n\x0b\x65lectrolyte\x18, \x01(\t\x12\x13\n\x0bref_electrd\x18- \x01(\t\x12\x13\n\x0binter_thngs\x18. \x01(\t\x12\x12\n\ndensity_20\x18/ \x01(\x01\x12\x19\n\x11\x64\x65nsity_20_source\x18\x30 \x01(\t\x12\x1a\n\x12\x64\x65\x66\x61ult_warn_level\x18\x31 \x01(\x01\x12\x0c\n\x04n_20\x18\x32 \x01(\x01\x12\x13\n\x0bn_20_source\x18\x33 \x01(\t\x12\x0e\n\x06mp_low\x18\x34 \x01(\x01\x12\x0f\n\x07mp_high\x18\x35 \x01(\x01\x12\x11\n\tmp_source\x18\x36 \x01(\t\x12\x0e\n\x06\x62p_low\x18\x37 \x01(\x01\x12\x0f\n\x07\x62p_high\x18\x38 \x01(\x01\x12\x10\n\x08\x62p_press\x18\x39 \x01(\x01\x12\x12\n\npress_unit\x18: \x01(\t\x12\x11\n\tbp_source\x18; \x01(\t\x12\x10\n\x08safety_r\x18< \x01(\t\x12\x10\n\x08safety_h\x18= \x01(\t\x12\x10\n\x08safety_s\x18> \x01(\t\x12\x10\n\x08safety_p\x18? \x01(\t\x12\x13\n\x0bsafety_text\x18@ \x01(\t\x12\x12\n\nsafety_sym\x18\x41 \x01(\t\x12\x16\n\x0esafety_sym_ghs\x18\x42 \x01(\t\x12\x15\n\rsafety_source\x18\x43 \x01(\t\x12\x13\n\x0b\x63omment_mol\x18\x44 \x01(\t\"=\n\x15\x43reateMoleculeRequest\x12$\n\x08molecule\x18\x01 \x01(\x0b\x32\x12.molecule.Molecule\">\n\x16\x43reateMoleculeResponse\x12$\n\x08molecule\x18\x01 \x01(\x0b\x32\x12.molecule.Molecule\"!\n\x13ReadMoleculeRequest\x12\n\n\x02id\x18\x01 \x01(\t\"<\n\x14ReadMoleculeResponse\x12$\n\x08molecule\x18\x01 \x01(\x0b\x32\x12.molecule.Molecule\"=\n\x15UpdateMoleculeRequest\x12$\n\x08molecule\x18\x01 \x01(\x0b\x32\x12.molecule.Molecule\">\n\x16UpdateMoleculeResponse\x12$\n\x08molecule\x18\x01 \x01(\x0b\x32\x12.molecule.Molecule\",\n\x15\x44\x65leteMoleculeRequest\x12\x13\n\x0bmolecule_id\x18\x01 \x01(\t\"-\n\x16\x44\x65leteMoleculeResponse\x12\x13\n\x0bmolecule_id\x18\x01 \x01(\t\"\x15\n\x13ListMoleculeRequest\"<\n\x14ListMoleculeResponse\x12$\n\x08molecule\x18\x01 \x01(\x0b\x32\x12.molecule.Molecule2\xba\x03\n\x0fMoleculeService\x12U\n\x0e\x43reateMolecule\x12\x1f.molecule.CreateMoleculeRequest\x1a .molecule.CreateMoleculeResponse\"\x00\x12O\n\x0cReadMolecule\x12\x1d.molecule.ReadMoleculeRequest\x1a\x1e.molecule.ReadMoleculeResponse\"\x00\x12U\n\x0eUpdateMolecule\x12\x1f.molecule.UpdateMoleculeRequest\x1a .molecule.UpdateMoleculeResponse\"\x00\x12U\n\x0e\x44\x65leteMolecule\x12\x1f.molecule.DeleteMoleculeRequest\x1a .molecule.DeleteMoleculeResponse\"\x00\x12Q\n\x0cListMolecule\x12\x1d.molecule.ListMoleculeRequest\x1a\x1e.molecule.ListMoleculeResponse\"\x00\x30\x01\x62\x06proto3')
+
+
+
+_MOLECULE = DESCRIPTOR.message_types_by_name['Molecule']
+_CREATEMOLECULEREQUEST = DESCRIPTOR.message_types_by_name['CreateMoleculeRequest']
+_CREATEMOLECULERESPONSE = DESCRIPTOR.message_types_by_name['CreateMoleculeResponse']
+_READMOLECULEREQUEST = DESCRIPTOR.message_types_by_name['ReadMoleculeRequest']
+_READMOLECULERESPONSE = DESCRIPTOR.message_types_by_name['ReadMoleculeResponse']
+_UPDATEMOLECULEREQUEST = DESCRIPTOR.message_types_by_name['UpdateMoleculeRequest']
+_UPDATEMOLECULERESPONSE = DESCRIPTOR.message_types_by_name['UpdateMoleculeResponse']
+_DELETEMOLECULEREQUEST = DESCRIPTOR.message_types_by_name['DeleteMoleculeRequest']
+_DELETEMOLECULERESPONSE = DESCRIPTOR.message_types_by_name['DeleteMoleculeResponse']
+_LISTMOLECULEREQUEST = DESCRIPTOR.message_types_by_name['ListMoleculeRequest']
+_LISTMOLECULERESPONSE = DESCRIPTOR.message_types_by_name['ListMoleculeResponse']
+Molecule = _reflection.GeneratedProtocolMessageType('Molecule', (_message.Message,), {
+  'DESCRIPTOR' : _MOLECULE,
+  '__module__' : 'molecule_pb2'
+  # @@protoc_insertion_point(class_scope:molecule.Molecule)
+  })
+_sym_db.RegisterMessage(Molecule)
+
+CreateMoleculeRequest = _reflection.GeneratedProtocolMessageType('CreateMoleculeRequest', (_message.Message,), {
+  'DESCRIPTOR' : _CREATEMOLECULEREQUEST,
+  '__module__' : 'molecule_pb2'
+  # @@protoc_insertion_point(class_scope:molecule.CreateMoleculeRequest)
+  })
+_sym_db.RegisterMessage(CreateMoleculeRequest)
+
+CreateMoleculeResponse = _reflection.GeneratedProtocolMessageType('CreateMoleculeResponse', (_message.Message,), {
+  'DESCRIPTOR' : _CREATEMOLECULERESPONSE,
+  '__module__' : 'molecule_pb2'
+  # @@protoc_insertion_point(class_scope:molecule.CreateMoleculeResponse)
+  })
+_sym_db.RegisterMessage(CreateMoleculeResponse)
+
+ReadMoleculeRequest = _reflection.GeneratedProtocolMessageType('ReadMoleculeRequest', (_message.Message,), {
+  'DESCRIPTOR' : _READMOLECULEREQUEST,
+  '__module__' : 'molecule_pb2'
+  # @@protoc_insertion_point(class_scope:molecule.ReadMoleculeRequest)
+  })
+_sym_db.RegisterMessage(ReadMoleculeRequest)
+
+ReadMoleculeResponse = _reflection.GeneratedProtocolMessageType('ReadMoleculeResponse', (_message.Message,), {
+  'DESCRIPTOR' : _READMOLECULERESPONSE,
+  '__module__' : 'molecule_pb2'
+  # @@protoc_insertion_point(class_scope:molecule.ReadMoleculeResponse)
+  })
+_sym_db.RegisterMessage(ReadMoleculeResponse)
+
+UpdateMoleculeRequest = _reflection.GeneratedProtocolMessageType('UpdateMoleculeRequest', (_message.Message,), {
+  'DESCRIPTOR' : _UPDATEMOLECULEREQUEST,
+  '__module__' : 'molecule_pb2'
+  # @@protoc_insertion_point(class_scope:molecule.UpdateMoleculeRequest)
+  })
+_sym_db.RegisterMessage(UpdateMoleculeRequest)
+
+UpdateMoleculeResponse = _reflection.GeneratedProtocolMessageType('UpdateMoleculeResponse', (_message.Message,), {
+  'DESCRIPTOR' : _UPDATEMOLECULERESPONSE,
+  '__module__' : 'molecule_pb2'
+  # @@protoc_insertion_point(class_scope:molecule.UpdateMoleculeResponse)
+  })
+_sym_db.RegisterMessage(UpdateMoleculeResponse)
+
+DeleteMoleculeRequest = _reflection.GeneratedProtocolMessageType('DeleteMoleculeRequest', (_message.Message,), {
+  'DESCRIPTOR' : _DELETEMOLECULEREQUEST,
+  '__module__' : 'molecule_pb2'
+  # @@protoc_insertion_point(class_scope:molecule.DeleteMoleculeRequest)
+  })
+_sym_db.RegisterMessage(DeleteMoleculeRequest)
+
+DeleteMoleculeResponse = _reflection.GeneratedProtocolMessageType('DeleteMoleculeResponse', (_message.Message,), {
+  'DESCRIPTOR' : _DELETEMOLECULERESPONSE,
+  '__module__' : 'molecule_pb2'
+  # @@protoc_insertion_point(class_scope:molecule.DeleteMoleculeResponse)
+  })
+_sym_db.RegisterMessage(DeleteMoleculeResponse)
+
+ListMoleculeRequest = _reflection.GeneratedProtocolMessageType('ListMoleculeRequest', (_message.Message,), {
+  'DESCRIPTOR' : _LISTMOLECULEREQUEST,
+  '__module__' : 'molecule_pb2'
+  # @@protoc_insertion_point(class_scope:molecule.ListMoleculeRequest)
+  })
+_sym_db.RegisterMessage(ListMoleculeRequest)
+
+ListMoleculeResponse = _reflection.GeneratedProtocolMessageType('ListMoleculeResponse', (_message.Message,), {
+  'DESCRIPTOR' : _LISTMOLECULERESPONSE,
+  '__module__' : 'molecule_pb2'
+  # @@protoc_insertion_point(class_scope:molecule.ListMoleculeResponse)
+  })
+_sym_db.RegisterMessage(ListMoleculeResponse)
+
+_MOLECULESERVICE = DESCRIPTOR.services_by_name['MoleculeService']
+if _descriptor._USE_C_DESCRIPTORS == False:
+
+  DESCRIPTOR._options = None
+  _MOLECULE._serialized_start=29
+  _MOLECULE._serialized_end=1345
+  _CREATEMOLECULEREQUEST._serialized_start=1347
+  _CREATEMOLECULEREQUEST._serialized_end=1408
+  _CREATEMOLECULERESPONSE._serialized_start=1410
+  _CREATEMOLECULERESPONSE._serialized_end=1472
+  _READMOLECULEREQUEST._serialized_start=1474
+  _READMOLECULEREQUEST._serialized_end=1507
+  _READMOLECULERESPONSE._serialized_start=1509
+  _READMOLECULERESPONSE._serialized_end=1569
+  _UPDATEMOLECULEREQUEST._serialized_start=1571
+  _UPDATEMOLECULEREQUEST._serialized_end=1632
+  _UPDATEMOLECULERESPONSE._serialized_start=1634
+  _UPDATEMOLECULERESPONSE._serialized_end=1696
+  _DELETEMOLECULEREQUEST._serialized_start=1698
+  _DELETEMOLECULEREQUEST._serialized_end=1742
+  _DELETEMOLECULERESPONSE._serialized_start=1744
+  _DELETEMOLECULERESPONSE._serialized_end=1789
+  _LISTMOLECULEREQUEST._serialized_start=1791
+  _LISTMOLECULEREQUEST._serialized_end=1812
+  _LISTMOLECULERESPONSE._serialized_start=1814
+  _LISTMOLECULERESPONSE._serialized_end=1874
+  _MOLECULESERVICE._serialized_start=1877
+  _MOLECULESERVICE._serialized_end=2319
+# @@protoc_insertion_point(module_scope)
diff --git a/gsoc2022/smilesdb/rpc_handler/molecule_pb2_grpc.py b/gsoc2022/smilesdb/rpc_handler/molecule_pb2_grpc.py
new file mode 100644
index 0000000..4d78e91
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/molecule_pb2_grpc.py
@@ -0,0 +1,198 @@
+# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
+"""Client and server classes corresponding to protobuf-defined services."""
+import grpc
+
+import molecule_pb2 as molecule__pb2
+
+
+class MoleculeServiceStub(object):
+    """Missing associated documentation comment in .proto file."""
+
+    def __init__(self, channel):
+        """Constructor.
+
+        Args:
+            channel: A grpc.Channel.
+        """
+        self.CreateMolecule = channel.unary_unary(
+                '/molecule.MoleculeService/CreateMolecule',
+                request_serializer=molecule__pb2.CreateMoleculeRequest.SerializeToString,
+                response_deserializer=molecule__pb2.CreateMoleculeResponse.FromString,
+                )
+        self.ReadMolecule = channel.unary_unary(
+                '/molecule.MoleculeService/ReadMolecule',
+                request_serializer=molecule__pb2.ReadMoleculeRequest.SerializeToString,
+                response_deserializer=molecule__pb2.ReadMoleculeResponse.FromString,
+                )
+        self.UpdateMolecule = channel.unary_unary(
+                '/molecule.MoleculeService/UpdateMolecule',
+                request_serializer=molecule__pb2.UpdateMoleculeRequest.SerializeToString,
+                response_deserializer=molecule__pb2.UpdateMoleculeResponse.FromString,
+                )
+        self.DeleteMolecule = channel.unary_unary(
+                '/molecule.MoleculeService/DeleteMolecule',
+                request_serializer=molecule__pb2.DeleteMoleculeRequest.SerializeToString,
+                response_deserializer=molecule__pb2.DeleteMoleculeResponse.FromString,
+                )
+        self.ListMolecule = channel.unary_stream(
+                '/molecule.MoleculeService/ListMolecule',
+                request_serializer=molecule__pb2.ListMoleculeRequest.SerializeToString,
+                response_deserializer=molecule__pb2.ListMoleculeResponse.FromString,
+                )
+
+
+class MoleculeServiceServicer(object):
+    """Missing associated documentation comment in .proto file."""
+
+    def CreateMolecule(self, request, context):
+        """Missing associated documentation comment in .proto file."""
+        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+        context.set_details('Method not implemented!')
+        raise NotImplementedError('Method not implemented!')
+
+    def ReadMolecule(self, request, context):
+        """Missing associated documentation comment in .proto file."""
+        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+        context.set_details('Method not implemented!')
+        raise NotImplementedError('Method not implemented!')
+
+    def UpdateMolecule(self, request, context):
+        """Missing associated documentation comment in .proto file."""
+        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+        context.set_details('Method not implemented!')
+        raise NotImplementedError('Method not implemented!')
+
+    def DeleteMolecule(self, request, context):
+        """Missing associated documentation comment in .proto file."""
+        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+        context.set_details('Method not implemented!')
+        raise NotImplementedError('Method not implemented!')
+
+    def ListMolecule(self, request, context):
+        """Missing associated documentation comment in .proto file."""
+        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+        context.set_details('Method not implemented!')
+        raise NotImplementedError('Method not implemented!')
+
+
+def add_MoleculeServiceServicer_to_server(servicer, server):
+    rpc_method_handlers = {
+            'CreateMolecule': grpc.unary_unary_rpc_method_handler(
+                    servicer.CreateMolecule,
+                    request_deserializer=molecule__pb2.CreateMoleculeRequest.FromString,
+                    response_serializer=molecule__pb2.CreateMoleculeResponse.SerializeToString,
+            ),
+            'ReadMolecule': grpc.unary_unary_rpc_method_handler(
+                    servicer.ReadMolecule,
+                    request_deserializer=molecule__pb2.ReadMoleculeRequest.FromString,
+                    response_serializer=molecule__pb2.ReadMoleculeResponse.SerializeToString,
+            ),
+            'UpdateMolecule': grpc.unary_unary_rpc_method_handler(
+                    servicer.UpdateMolecule,
+                    request_deserializer=molecule__pb2.UpdateMoleculeRequest.FromString,
+                    response_serializer=molecule__pb2.UpdateMoleculeResponse.SerializeToString,
+            ),
+            'DeleteMolecule': grpc.unary_unary_rpc_method_handler(
+                    servicer.DeleteMolecule,
+                    request_deserializer=molecule__pb2.DeleteMoleculeRequest.FromString,
+                    response_serializer=molecule__pb2.DeleteMoleculeResponse.SerializeToString,
+            ),
+            'ListMolecule': grpc.unary_stream_rpc_method_handler(
+                    servicer.ListMolecule,
+                    request_deserializer=molecule__pb2.ListMoleculeRequest.FromString,
+                    response_serializer=molecule__pb2.ListMoleculeResponse.SerializeToString,
+            ),
+    }
+    generic_handler = grpc.method_handlers_generic_handler(
+            'molecule.MoleculeService', rpc_method_handlers)
+    server.add_generic_rpc_handlers((generic_handler,))
+
+
+ # This class is part of an EXPERIMENTAL API.
+class MoleculeService(object):
+    """Missing associated documentation comment in .proto file."""
+
+    @staticmethod
+    def CreateMolecule(request,
+            target,
+            options=(),
+            channel_credentials=None,
+            call_credentials=None,
+            insecure=False,
+            compression=None,
+            wait_for_ready=None,
+            timeout=None,
+            metadata=None):
+        return grpc.experimental.unary_unary(request, target, '/molecule.MoleculeService/CreateMolecule',
+            molecule__pb2.CreateMoleculeRequest.SerializeToString,
+            molecule__pb2.CreateMoleculeResponse.FromString,
+            options, channel_credentials,
+            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+
+    @staticmethod
+    def ReadMolecule(request,
+            target,
+            options=(),
+            channel_credentials=None,
+            call_credentials=None,
+            insecure=False,
+            compression=None,
+            wait_for_ready=None,
+            timeout=None,
+            metadata=None):
+        return grpc.experimental.unary_unary(request, target, '/molecule.MoleculeService/ReadMolecule',
+            molecule__pb2.ReadMoleculeRequest.SerializeToString,
+            molecule__pb2.ReadMoleculeResponse.FromString,
+            options, channel_credentials,
+            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+
+    @staticmethod
+    def UpdateMolecule(request,
+            target,
+            options=(),
+            channel_credentials=None,
+            call_credentials=None,
+            insecure=False,
+            compression=None,
+            wait_for_ready=None,
+            timeout=None,
+            metadata=None):
+        return grpc.experimental.unary_unary(request, target, '/molecule.MoleculeService/UpdateMolecule',
+            molecule__pb2.UpdateMoleculeRequest.SerializeToString,
+            molecule__pb2.UpdateMoleculeResponse.FromString,
+            options, channel_credentials,
+            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+
+    @staticmethod
+    def DeleteMolecule(request,
+            target,
+            options=(),
+            channel_credentials=None,
+            call_credentials=None,
+            insecure=False,
+            compression=None,
+            wait_for_ready=None,
+            timeout=None,
+            metadata=None):
+        return grpc.experimental.unary_unary(request, target, '/molecule.MoleculeService/DeleteMolecule',
+            molecule__pb2.DeleteMoleculeRequest.SerializeToString,
+            molecule__pb2.DeleteMoleculeResponse.FromString,
+            options, channel_credentials,
+            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
+
+    @staticmethod
+    def ListMolecule(request,
+            target,
+            options=(),
+            channel_credentials=None,
+            call_credentials=None,
+            insecure=False,
+            compression=None,
+            wait_for_ready=None,
+            timeout=None,
+            metadata=None):
+        return grpc.experimental.unary_stream(request, target, '/molecule.MoleculeService/ListMolecule',
+            molecule__pb2.ListMoleculeRequest.SerializeToString,
+            molecule__pb2.ListMoleculeResponse.FromString,
+            options, channel_credentials,
+            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
diff --git a/gsoc2022/smilesdb/rpc_handler/requirements.txt b/gsoc2022/smilesdb/rpc_handler/requirements.txt
new file mode 100644
index 0000000..858af79
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/requirements.txt
@@ -0,0 +1,12 @@
+asgiref==3.5.2
+backports.zoneinfo==0.2.1
+Django==4.1
+django-cors-headers==3.13.0
+djangogrpcframework==0.2.1
+djangorestframework==3.13.1
+grpcio==1.48.1
+grpcio-tools==1.48.1
+protobuf==3.20.1
+pytz==2022.2.1
+six==1.16.0
+sqlparse==0.4.2
diff --git a/gsoc2022/smilesdb/rpc_handler/rpc_handler/__init__.py b/gsoc2022/smilesdb/rpc_handler/rpc_handler/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/rpc_handler/__init__.py
diff --git a/gsoc2022/smilesdb/rpc_handler/rpc_handler/__pycache__/__init__.cpython-38.pyc b/gsoc2022/smilesdb/rpc_handler/rpc_handler/__pycache__/__init__.cpython-38.pyc
new file mode 100644
index 0000000..1e63d62
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/rpc_handler/__pycache__/__init__.cpython-38.pyc
Binary files differ
diff --git a/gsoc2022/smilesdb/rpc_handler/rpc_handler/__pycache__/__init__.cpython-39.pyc b/gsoc2022/smilesdb/rpc_handler/rpc_handler/__pycache__/__init__.cpython-39.pyc
new file mode 100644
index 0000000..3696a03
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/rpc_handler/__pycache__/__init__.cpython-39.pyc
Binary files differ
diff --git a/gsoc2022/smilesdb/rpc_handler/rpc_handler/__pycache__/settings.cpython-38.pyc b/gsoc2022/smilesdb/rpc_handler/rpc_handler/__pycache__/settings.cpython-38.pyc
new file mode 100644
index 0000000..d3eb852
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/rpc_handler/__pycache__/settings.cpython-38.pyc
Binary files differ
diff --git a/gsoc2022/smilesdb/rpc_handler/rpc_handler/__pycache__/settings.cpython-39.pyc b/gsoc2022/smilesdb/rpc_handler/rpc_handler/__pycache__/settings.cpython-39.pyc
new file mode 100644
index 0000000..8ea36b5
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/rpc_handler/__pycache__/settings.cpython-39.pyc
Binary files differ
diff --git a/gsoc2022/smilesdb/rpc_handler/rpc_handler/__pycache__/urls.cpython-38.pyc b/gsoc2022/smilesdb/rpc_handler/rpc_handler/__pycache__/urls.cpython-38.pyc
new file mode 100644
index 0000000..ad40dd3
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/rpc_handler/__pycache__/urls.cpython-38.pyc
Binary files differ
diff --git a/gsoc2022/smilesdb/rpc_handler/rpc_handler/__pycache__/urls.cpython-39.pyc b/gsoc2022/smilesdb/rpc_handler/rpc_handler/__pycache__/urls.cpython-39.pyc
new file mode 100644
index 0000000..6ea7299
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/rpc_handler/__pycache__/urls.cpython-39.pyc
Binary files differ
diff --git a/gsoc2022/smilesdb/rpc_handler/rpc_handler/__pycache__/wsgi.cpython-38.pyc b/gsoc2022/smilesdb/rpc_handler/rpc_handler/__pycache__/wsgi.cpython-38.pyc
new file mode 100644
index 0000000..2ddd6d7
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/rpc_handler/__pycache__/wsgi.cpython-38.pyc
Binary files differ
diff --git a/gsoc2022/smilesdb/rpc_handler/rpc_handler/__pycache__/wsgi.cpython-39.pyc b/gsoc2022/smilesdb/rpc_handler/rpc_handler/__pycache__/wsgi.cpython-39.pyc
new file mode 100644
index 0000000..d228350
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/rpc_handler/__pycache__/wsgi.cpython-39.pyc
Binary files differ
diff --git a/gsoc2022/smilesdb/rpc_handler/rpc_handler/asgi.py b/gsoc2022/smilesdb/rpc_handler/rpc_handler/asgi.py
new file mode 100644
index 0000000..e00e70b
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/rpc_handler/asgi.py
@@ -0,0 +1,16 @@
+"""
+ASGI config for rpc_handler project.
+
+It exposes the ASGI callable as a module-level variable named ``application``.
+
+For more information on this file, see
+https://docs.djangoproject.com/en/4.1/howto/deployment/asgi/
+"""
+
+import os
+
+from django.core.asgi import get_asgi_application
+
+os.environ.setdefault("DJANGO_SETTINGS_MODULE", "rpc_handler.settings")
+
+application = get_asgi_application()
diff --git a/gsoc2022/smilesdb/rpc_handler/rpc_handler/settings.py b/gsoc2022/smilesdb/rpc_handler/rpc_handler/settings.py
new file mode 100644
index 0000000..6ea275b
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/rpc_handler/settings.py
@@ -0,0 +1,118 @@
+"""
+Django settings for rpc_handler project.
+
+Generated by 'django-admin startproject' using Django 4.1.
+
+For more information on this file, see
+https://docs.djangoproject.com/en/4.1/topics/settings/
+
+For the full list of settings and their values, see
+https://docs.djangoproject.com/en/4.1/ref/settings/
+"""
+
+from pathlib import Path
+import os
+import sys
+
+# Build paths inside the project like this: BASE_DIR / 'subdir'.
+BASE_DIR = Path(__file__).resolve().parent.parent
+
+# Quick-start development settings - unsuitable for production
+# See https://docs.djangoproject.com/en/4.1/howto/deployment/checklist/
+
+# SECURITY WARNING: keep the secret key used in production secret!
+SECRET_KEY = "django-insecure-9&62v2ht_$daxz0x1!f7x^w^+z00(m@uzy6-1%3+1j@7i*15he"
+
+# SECURITY WARNING: don't run with debug turned on in production!
+DEBUG = True
+
+ALLOWED_HOSTS = []
+
+# Application definition
+
+INSTALLED_APPS = [
+    "django.contrib.admin",
+    "django.contrib.auth",
+    "django.contrib.contenttypes",
+    "django.contrib.sessions",
+    "django.contrib.messages",
+    "django.contrib.staticfiles",
+    'django_grpc_framework',
+    'dataHandler',
+    'corsheaders',
+]
+
+MIDDLEWARE = [
+    "django.middleware.security.SecurityMiddleware",
+    "django.contrib.sessions.middleware.SessionMiddleware",
+    "django.middleware.common.CommonMiddleware",
+    "django.middleware.csrf.CsrfViewMiddleware",
+    "django.contrib.auth.middleware.AuthenticationMiddleware",
+    "django.contrib.messages.middleware.MessageMiddleware",
+    "django.middleware.clickjacking.XFrameOptionsMiddleware",
+    'corsheaders.middleware.CorsMiddleware',
+]
+
+ROOT_URLCONF = "rpc_handler.urls"
+
+TEMPLATES = [
+    {
+        "BACKEND": "django.template.backends.django.DjangoTemplates",
+        "DIRS": [],
+        "APP_DIRS": True,
+        "OPTIONS": {
+            "context_processors": [
+                "django.template.context_processors.debug",
+                "django.template.context_processors.request",
+                "django.contrib.auth.context_processors.auth",
+                "django.contrib.messages.context_processors.messages",
+            ],
+        },
+    },
+]
+
+WSGI_APPLICATION = "rpc_handler.wsgi.application"
+
+# Database
+# https://docs.djangoproject.com/en/4.1/ref/settings/#databases
+
+DATABASES = {
+    "default": {
+        "ENGINE": "django.db.backends.sqlite3",
+        "NAME": BASE_DIR / "db.sqlite3",
+    }
+}
+
+# Password validation
+# https://docs.djangoproject.com/en/4.1/ref/settings/#auth-password-validators
+
+AUTH_PASSWORD_VALIDATORS = [
+    {
+        "NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator",
+    },
+    {"NAME": "django.contrib.auth.password_validation.MinimumLengthValidator", },
+    {"NAME": "django.contrib.auth.password_validation.CommonPasswordValidator", },
+    {"NAME": "django.contrib.auth.password_validation.NumericPasswordValidator", },
+]
+
+# Internationalization
+# https://docs.djangoproject.com/en/4.1/topics/i18n/
+
+LANGUAGE_CODE = "en-us"
+
+TIME_ZONE = "UTC"
+
+USE_I18N = True
+
+USE_TZ = True
+
+# Static files (CSS, JavaScript, Images)
+# https://docs.djangoproject.com/en/4.1/howto/static-files/
+
+STATIC_URL = "static/"
+
+# Default primary key field type
+# https://docs.djangoproject.com/en/4.1/ref/settings/#default-auto-field
+
+DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"
+CORS_ALLOW_ALL_ORIGINS = True
diff --git a/gsoc2022/smilesdb/rpc_handler/rpc_handler/urls.py b/gsoc2022/smilesdb/rpc_handler/rpc_handler/urls.py
new file mode 100644
index 0000000..a47fbae
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/rpc_handler/urls.py
@@ -0,0 +1,24 @@
+"""rpc_handler URL Configuration
+
+The `urlpatterns` list routes URLs to views. For more information please see:
+    https://docs.djangoproject.com/en/4.1/topics/http/urls/
+Examples:
+Function views
+    1. Add an import:  from my_app import views
+    2. Add a URL to urlpatterns:  path('', views.home, name='home')
+Class-based views
+    1. Add an import:  from other_app.views import Home
+    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
+Including another URLconf
+    1. Import the include() function: from django.urls import include, path
+    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
+"""
+
+
+from django.contrib import admin
+from django.urls import path, include
+
+urlpatterns = [
+    path("admin/", admin.site.urls),
+    path("api/", include('dataHandler.urls'))
+]
diff --git a/gsoc2022/smilesdb/rpc_handler/rpc_handler/wsgi.py b/gsoc2022/smilesdb/rpc_handler/rpc_handler/wsgi.py
new file mode 100644
index 0000000..8104da3
--- /dev/null
+++ b/gsoc2022/smilesdb/rpc_handler/rpc_handler/wsgi.py
@@ -0,0 +1,16 @@
+"""
+WSGI config for rpc_handler project.
+
+It exposes the WSGI callable as a module-level variable named ``application``.
+
+For more information on this file, see
+https://docs.djangoproject.com/en/4.1/howto/deployment/wsgi/
+"""
+
+import os
+
+from django.core.wsgi import get_wsgi_application
+
+os.environ.setdefault("DJANGO_SETTINGS_MODULE", "rpc_handler.settings")
+
+application = get_wsgi_application()